본문 바로가기

2017/06

상속 상속스위프트의 상속은 클래스, 프로토콜 등에서 가능합니다. 열거형, 구조체는 상속이 불가능합니다. 스위프트는 다중상속을 지원하지 않습니다. 이번 파트에서는 클래스의 상속에 대해서 알아봅니다 소스코드 클래스의 상속과 재정의상속 문법class 이름: 상속받을 클래스 이름 { /* 구현부 */ } // 기반 클래스 Person class Person { var name: String = "" func selfIntroduce() { print("저는 \(name)입니다") } // final 키워드를 사용하여 재정의를 방지할 수 있습니다 final func sayHello() { print("hello") } // 타입 메서드 // 재정의 불가 타입 메서드 - static static func typeMeth.. 더보기
사진 게시판 API 만들기 [1] Perfect 미니 프로젝트 [1] 1. 프로젝트 개요 2. mongoDB 설치 3. 패키지 설치 우분투에 스위프트 설치를 시작으로 이후 두 포스팅에 걸쳐 퍼펙트에 대해 조금 알아보았습니다. 2017/04/03 - [Swift/Perfect] - 우분투(Ubuntu)에 스위프트 설치하기2017/05/17 - [Swift/Perfect] - Perfect 시작하기2017/05/24 - [Swift/Perfect] - Perfect 라우팅 이번 부터는 실질적으로 퍼펙트를 사용하여 작은 미니프로젝트를 해보려합니다.아... 물론 이런 허접한 구성은 실제 서버에서 사용하면 안되지만 간단한 예제로 감만 잡아보는 겁니다. 인증도 없고, 뭐도 없고, 보안도 안되고... 뭐... 암것도 없어요. 그러나 한 번 작은 프로.. 더보기
프로퍼티 - Property 프로퍼티프로퍼티는 클래스, 구조체, 열거형과 연관된 값입니다. 타입과 관련된 값을 저장할 수도, 연산할 수도 있습니다. 소스코드 프로퍼티의 종류인스턴스 저장 프로퍼티타입 저장 프로퍼티인스턴스 연산 프로퍼티타입 연산 프로퍼티지연 저장 프로퍼티이번 파트에서는 지연 저장 프로퍼티를 제외한 저장 프로퍼티와 연산 프로퍼티에 대해 알아봅니다. 정의와 사용프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있습니다. 다만 열거형 내부에는 연산 프로퍼티만 구현할 수 있습니다. 연산 프로퍼티는 var로만 선언할 수 있습니다.연산프로퍼티를 읽기전용으로는 구현할 수 있지만, 쓰기 전용으로는 구현할 수 없습니다. 읽기전용으로 구현하려면 get 블럭만 작성해주면 됩니다. 읽기전용은 get블럭을 생략할 수 있습니다. 읽기, 쓰.. 더보기
Swift 4 변경사항 오늘의 주제 스위프트 4 추가/변경사항 아, 벌써 스위프트가 4번째 버전이 나오네요! 참으로 빠르게 변합니다. 이제 문법적으로 변경되는 부분이 크게 많지 않아서 서 3 버전과 크게 달라진 문법은 많지 않습니다. 내부적으로 수정되거나 추가된 문법이 많고, 삭제된 부분은 거의 없습니다. 긴 말 필요없이 한 번 무엇이 바뀌었는지 살펴볼까요? 스따뚜~~~~~~~~~~~~ 단방향 범위 연산자이제 범위연산자에서 양 쪽 끝을 모두 신경쓸 필요가 없습니다, 야호! [SE-0172] var numbers = [1, 2, 3, 4, 5] // Swift 3 numbers[2.. T? { return dictionary[key] as? T } } let information = CustomModel(dictionary: [.. 더보기
클로저 - Closure 클로저클로저는 코드의 블럭입니다. 일급시민(first-citizen)으로, 전달인자, 변수, 상수 등으로 저장, 전달이 가능합니다. 함수는 클로저의 일종으로, `이름이 있는 클로저`라고 생각하면 됩니다. 소스코드 기본 클로저 문법{ (매개변수 목록) -> 반환타입 in 실행 코드 } 클로저의 사용 // sum이라는 상수에 클로저를 할당 let sum: (Int, Int) -> Int = { (a: Int, b: Int) in return a + b } let sumResult: Int = sum(1, 2) print(sumResult) // 3 함수의 전달인자로서의 클로저클로저는 주로 함수의 전달인자로 많이 사용됩니다. 함수 내부에서 원하는 코드블럭을 실행할 수 있습니다.let add: (Int, Int.. 더보기
클래스, 구조체, 열거형 비교 Class vs Struct/Enum 소스코드 열거형과 구조체는 값 타입이며, 클래스는 참조 타입이라는 것이 가장 큰 차이입니다. 또한, 클래스는 상속이 가능하지만 구조체와 열거형은 상속이 불가능합니다.struct ValueType { var property = 1 } class ReferenceType { var property = 1 } // 첫 번째 구조체 인스턴스 let firstStructInstance = ValueType() // 두 번째 구조체 인스턴스에 첫 번째 인스턴스 값 복사 var secondStructInstance = firstStructInstance // 두 번째 구조체 인스턴스 프로퍼티 값 수정 secondStructInstance.property = 2 // 두 번째 구조.. 더보기
열거형 - Enumerations 열거형 소스코드 정의 문법스위프트의 열거형은 다른 언어의 열거형과는 많이 다릅니다. 잘 살펴보아야 할 스위프트의 기능 중 하나입니다.enum은 타입이므로 대문자 카멜케이스를 사용하여 이름을 정의합니다각 case는 소문자 카멜케이스로 정의합니다각 case는 그 자체가 고유의 값입니다각 케이스는 한 줄에 개별로도, 한 줄에 여러개도 정의할 수 있습니다 enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 // ... } 열거형 사용enum Weekday { case mon case tue case wed case thu, fri, sat, sun } // 열거형 타입과 케이스를 모두 사용하여도 됩니다 var day: Weekday = Weekday.mon // 타입이 명확하다면.. 더보기
클래스 클래스 소스코드 정의 문법클래스는 참조 타입입니다. 타입이름은 대문자 카멜케이스를 사용하여 정의합니다.class 이름 { /* 구현부 */ } 프로퍼티 및 메서드 구현클래스의 타입 메서드는 두 종류가 있습니다. 상속 후 재정의가 가능한 class 타입메서드, 상속 후 재정의가 불가능한 static 타입메서드가 있습니다. 자세한 내용은 상속 부분에서 다시 다룹니다.class Sample { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("inst.. 더보기
구조체 구조체 소스코드 정의 문법스위프트 대부분의 타입은 구조체로 이루어져 있습니다. 구조체는 값 타입입니다. 타입이름은 대문자 카멜케이스를 사용하여 정의합니다.struct 이름 { /* 구현부 */ } 프로퍼티 및 메서드 구현struct Sample { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static func typeMethod() { print("type method") } } 구조.. 더보기
옵셔널 옵셔널 소스코드학습자료 옵셔널 값 추출 소스코드학습자료 관련문서 The Swift Programming Language - The Basics by yagom facebook : http://www.facebook.com/yagomSoftfacebook group : https://www.facebook.com/groups/yagom/ p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다. RSS Feed 받기 ↓↓↓ 블로거에게 공감은 큰 힘이 됩니다 ↓↓↓ 더보기
반복문 반복문for-inwhilerepeat-while 소스코드 for-in 구문기존 언어의 for-each 구문과 유사합니다. Dictionary의 경우 이터레이션 아이템으로 튜플이 들어옵니다. 튜플에 관해서는 Swift Language Guide의 Tuples 부분을 참고하면 되겠습니다. for-in 구문의 기본 형태for item in items { /* 실행 구문 */ } for-in 구문의 사용var integers = [1, 2, 3] let people = ["yagom": 10, "eric": 15, "mike": 12] for integer in integers { print(integer) } // Dictionary의 item은 key와 value로 구성된 튜플 타입입니다 for (name,.. 더보기