본문 바로가기

iOS 프로그래밍/문법

(6)
[swift] 문법정리6 (옵셔널 체이닝) 옵셔널 체인 - 옵셔널 체인으로 클래스나 구조체의 속성을 참조할 경우 클래스의 값이 nil이어도 오류가 발생하지 않는다 - 옵셔널 체인으로 읽어낸 마지막 값이 일반 타입이라도 모두 옵셔널 타입으로 리턴된다 - 옵셔널 타입으로 정의된 값이 자식 프로퍼티나 메서드를 가지고 있을 때, 다중 if를 쓰지 않고 간결하게 코드를 작성하기 위해 쓰인다 - 옵셔널 타입의 데이터는 연산이 불가능하다. 하지만 연산을 해야한다면 옵셔널 타입의 데이터를 다시 한번 옵셔널 타입으로 변경하면서 해제를 시킬 수 있다. class Person { var name : String? var age : Int? var sns : SNS? = SNS() } class SNS { var fb : FaceBook? = FaceBook() va..
[swift] 문법정리5 (배열, 딕셔너리,클래스와 구조체 열거형 비교) 스위프트 배열 초기화 - 배열은 동일한 타입의 값이지만 여러 타입이 혼합된 배열도 가능하다 - 배열의 타입은 타입 어노테이션(type annotation)을 사용하여 구체적으로 지정할 수도 있고, 타입 유추(type inference)를 이용하여 컴파일러가 식별하도록 할 수도 있다. ● 가변형 문자열 배열 var treeArray = ["Pine", "Oak", "Yew"] var treeArray : [String] = ["Pine", "Oak", "Yew"] ● 불변형 문자열 배열 let treeArray1 = ["Pine", "Oak", "Yew"] - 배열은 생성 시에 값을 할당할 필요는 없다. var 변수 이름 = [타입]() var nameArray = [String](repeating: "S..
[swift] 문법정리4 (클래스, 상속, 익스텐션) 객체지향 용어 비교 ​ 스위프트 클래스 선언하기 class 새로운 클래스 이름: 부모 클래스 { // 속성(프로퍼티) // 인스턴스 메서드 // 타입(type) 메서드(클래스 메서드) } - "속성" 부분은 클래스 내에 포함되는 변수(var)와 상수(let)를 정의 한다. - "인스턴스 메서드"는 객체가 호출하는 메소드를 정의한다. - "타입 메서드" 는 클래스가 호출하는 메서드를 정의한다. ​ 인스턴스 선언하고 초기화하기, 해제하기 - 위의 클래스를 가지고 어떠한 일을 하기 위해서는 클래스의 인스턴스를 만드어야 한다. - 가장 먼저 할 일은 인스턴스가 만들어졌을 때 이 인스턴스의 참조체를 저장할 변수를 선언하는 것 · var 인스턴스명: 클래스명 = 클래스명() · var 변수명: 자료형 = 초깃값 -..
[swift] 문법정리3 ( 함수와 메서드, 클로저) 함수 함수 정의부의 값을 매개변수 , 호출시의 값은 인수라고 부름 ​ 메서드 특정 클래스나 구조체, 또는 열거형과 관련된 함수 ​ 스위프트 함수를 선언하는 방법 - 매개변수를 받지 않으며 결과를 반환하지도 않고 오직 메시지만 출력 ex) func sayHello() { //리턴값 없으면(Void) 지정하지 않아도 됨 print("Hello") } - 하나의 문자열과 하나의 정수를 매개변수로 받아서 문자열을 반환 func buildMessage(name: String, count: Int) -> String { return("\(name), you are customer number \(count)") } C언어에서 swift 함수 변경하기 c언어 int add(int x, int y) { //C, C++..
[swift] 문법 정리2 형 변환(as! as?로 downcasting) - 부모인스턴스 as! 자식클래스 // downcasting 일반 타입으로 반환. // 다운캐스팅이 반드시 성공할 것이라는 확신이 있을 때 - 부모인스턴스 as? 자식클래스 // downcasting 옵셔널 타입으로 반환. 오류 가능성 있을 경우 - 성공 확신이 있으면 as! 키워드를 사용하며 강제 변환(forced conversion) *변환이 안되면 crash - 성공 확신이 없으면 as?를 사용하여 안전하게 변환 * 변환이 안되면 nil을 리턴하므로 옵셔널 타입으로 반환함 - 다운캐스팅은 어떤 클래스에서 다른 클래스로 변환할 때 안전한 변환을 보장할 수 없으며, 컴파일러가 유효하지 않은 변환 시도를 잡아낼 수도 있음 - 다운캐스팅에서 유효하지 않은 형..
[swift] 문법 정리1 let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] //dictionary는 key:value형식의 배열 for (animalName, legCount) in numberOfLegs { print("\(animalName)s have \(legCount) legs") } //숫자를 저장 var mynumber : Int = 10 위와 같이 초깃값이 있을 경우에는 컴파일러가 타입 추론을 하므로 데이터 타입을 명시할 필요 없음 스위프트 변수 : var - 변경 가능 스위프트 상수 : let -변경 불가능(코드 내에서 반복적으로 사용되는 값이 있을 경우에 유용) -> 애플은 코드의 효율성과 실행 성능을 높이기 위해서 변수보다는 상수를 사용하라고 권장 ​ 타입 어노테이..