본문 바로가기

Apple/Swift

Swift 08 - stride() Swift는 반복문을 돌리기 위해 유용한 stride()라는 옵션을 제공한다. stride()는 임의의 증가값을 사용해 시작값에서 최종값으로 이동할 수 있게 한다. 사용법 // to: 옵션은 to 값 포함 하지 않음 for i in stride(from: , to: , by: ) { print(i) } // through: 옵션은 through 값 포함 for i in stride(from: , through: , by: ) { print(i) } 사용 예시 - 1(정수 증가) for i in stride(from: 0, to: 10, by: 2) { print(i) } // output // 0 // 2 // 4 // 6 // 8 사용 예시 - 2(실수 증가) for i in stride(from: 0..
Swift 07 - 옵셔널(Optional) Swift의 옵셔널은 변수에 값이 있는지 없는지 구분위해 Swift에서 제시하는 방식이다. 모든 타입을 옵셔널로 선언할 수 있다. 타입을 옵셔널로 설정하려면 타입 뒤에 물음표를 추가하면 된다. nil 값을 변수에 넣기 위해서는 변수를 옵셔널로 선언해야 한다. 안하면 nil값이 안들어간다. // 문자열 타입의 옵셔널 변수 선언 var name: String? = nil // 안됨 var name2: String = nil // error // 'nil' cannot initialize specified type 'String' 옵셔널 문자열은 일반적인 문자열을 가질수도 있고 nil 값을 가질 수도 있다. 위에 작성한 nil값을 넣은 name 변수는 값이 없기 때문에 String에 존재하는 count 프로퍼..
Swift 06 - 익스텐션(extension) extension은 기존 타입에 메서드를 추가하여 원래 없었던 일을 수행하게 하는 기능이다. struct Player { var playerName: String var backNumber: Int } extension Player { func callPlayer() { print("nice one \(playerName)") } }
Swift 05 - 프로토콜(Protocol) Swift 에서 프로토콜은 어떤 것이 가져야만 하는 어떤 프로퍼티와 메서드를 설명하는 방법이다. Swift에게 해당 프로토콜에서 사용하는 타입을 알려주는 것이다. 아래 코드를 보면 BackNumber 를 프로토콜로 작성했고 그 내부에는 backNumber가 int 타입으로 작성되어있다. 이 프로토콜은 get과 set으로 읽기 쓰기 가능한 int 타입의 backNumber를 필요로 한다는 뜻이다. TottenhamPlayer struct에서 BackNumber를 준수하기로 했고 프로퍼티로 그대로 backNumber를 int 타입으로 작성해 주어야 한다. protocol BackNumber { var backNumber: Int { get set } } struct TottenhamPlayer: BackNu..
Swift 04 - 클래스(class) class 프로퍼티와 메서드로 새로운 타입을 만들 수 있다는 점에서 구조체와 공통점이 있지만, 차이점이 있다. 첫번째 차이점은 memberwise initializer가 기본으로 제공되지 않는다는 점이다. 이것은 class에 프로퍼티가 있는 경우 꼭 자체 initializer를 함께 작성해야 한다는 점이다. class ManchesterCityPlayers { var playerName: String var playerNubmer: Int init(playerName: String, playerNubmer: Int) { self.playerName = playerName self.playerNubmer = playerNubmer } } // 나머지는 struct와 같다. let manCityPlayers..
Swift 03 - 구조체(struct) ❑ Struct(구조체 : structure) \Swift에서 String, Int 등과 같이 타입을 만들 수도 있는데, 가장 일반적인 방법은 구조체(struct)를 선언하는 것이다. struct에는 자체변수와 상수, 함수를 준다음 원하는대로 생성하고 사용할 수 있다. 아래 그림 처럼 String에 커맨드 + 클릭을 하면 String 타입에 대한 정의를 볼 수 있고.... String 타입이 struct임을 확인할 수 있다.. ❑ Property, Stored Property 구조체에 내부에 선언한 변수를 프로퍼티(property)라고 한다. 구조체로 타입을 정의하였으면 구조체의 인스턴스를 만들어 사용할 수 있다. Tottenham struct에 선언한 playerName, backNumberr과 같이 ..
Swift 02 - 클로저(Closure) ❑ 클로저 Swift에서는 문자열(String)이나 정수(Int)와 같은 다른 타입들처럼 타입으로 함수를 사용할 수 있다. 이 말은 함수를 만들어 변수에 할당하고 해당 변수를 사용해 함수를 호출하고 해당 함수를 매개변수로 다른함수에 저장하는 등의 기능을 할 수 있다는 뜻이다. 이런 식으로 사용하는 함수를 Closure(클로저)라고 한다. 함수 동작 방식과 유사하지만 다른 점이 있다. SwiftUI에서 클로저 정말 많이 사용하게 된다. let sprint = { print("손흥민이 스프린트한디.") } sprint() 변수에 할당하는 클로저는 함수(function)와는 달리 따로 이름이 없고 변수에 그대로 할당한다. 할당한 변수명을 함수와 같이 호출하여 사용할 수 있다. 작성된 클로저를 보면 파라미터(p..
Swift 01 - 함수(function) 함수(function)는 코드를 재사용할 때 유용하다. 필요한 함수를 작성해 이곳저곳에서 그 함수를 실행할 수 있다. 같은 기능을 하는 코드를 여러 번 작성하는 것은 비효율적이기 때문에 함수를 사용하면 효율적인 코드를 작성할 수 있다. Swift 함수는 func 라는 키워드로 시작한다. 함수를 실행하는 것을 함수호출이라고 한다. // 토트넘 설명을 출력하는 함수의 예시 func printTottehamDescription() { let mainDescription = """ 토트넘은 영국 잉글랜드 프리미어리그의 프로축구클럽으로 \ 연고지는 런던, \ 홈 구장은 토트넘 핫스퍼 스타디움이다 """ print(mainDescription) } // 선언한 함수를 사용 printTottehamDescriptio..