일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- 독학
- 인스펙터
- ios
- 직장인인강
- 패캠챌린지
- TableView
- swift
- 30개프로젝트로배우는iOS앱개발withSwift초격자패키지Online
- Background
- Git
- Optional Chaining
- 직장인자기계발
- 문자열 보간법
- 프로퍼티 관찰자
- RawValue
- Realm
- enum
- SeSAC
- switch
- 패스트캠퍼스후기
- Threading
- xcode
- cancelAsyncWrite
- 패스트캠퍼스
- 열거형
- beginAsyncWrite
- userDefaults
- 기본문법
- 함수
- 옵셔널 체이닝
- Today
- Total
목록전체 글 (99)
아삭아삭 iOS 개발
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RiOMi/btrunOwTWJC/nexNng2rwrypbOqAdwQeBk/img.png)
오늘은 swift에서 여러 옵셔널 내부의 값들 중 nil일지 아닐지 모르는 요소를 유용하게 활용할 수 있는 방법인 옵셔널 체이닝에 대해 알아보겠습니다. 옵셔널 체이닝의 정의와 다양한 활용방안 약 8가지에 대해 2편의 포스팅으로 나누어서 살펴보겠습니다. ■ 옵셔널 체이닝 (옵셔널에 속해 있는) nil일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 호출하거나 조회하기 위한 일련의 과정 옵셔널에 값이 있다면 프로퍼티, 메서드 등을 호출 가능 옵셔널이 nil이라면 프로퍼티, 메서드 등은 nil을 반환 ※ 여러 조회는 함께 연결될 수도 있으며, 체인에 어느 부분이라도 nil이면 전체 체인은 실패함 옵셔널 체이닝의 ?는 항상 옵셔널 표현구 다음에 위치함 ■ 옵셔널 체이닝의 다양한 활용방법 8가지 (1) ~ (4..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cLAyr9/btruc66fOIF/OwDPQYxk5khKZiZXxufCk0/img.png)
지난 시간에 이어서 swift에서 강력한 기능 중 하나인 열거형에 대해 마저 알아보겠습니다. 열거형의 다양한 활용법들 중에는 원시값과 초기화, 메서드 활용, 재귀 열거형 등에도 가능합니다. ■ 열거형의 다양한 활용방법 6가지 (4) ~ (6) 4) 열거형의 원시값(rawValue) 열거형을 제일 처음 정의할 때 미리 설정해두는 초기값을 의미 열거형의 각 항목은 자체로도 하나의 값이지만 항목에 원시값을 갖게 할 수도 있음 ※ 특정 타입으로 지정된 값을 가질 수 있음 swift의 경우 원시값의 타입으로 문자열, 문자, 정수, 부동소수점 숫자 타입 등 다른 데이터 타입들도 가능 ※ 단, 각 원시값은 열거형 선언부내 유일한 값이어야 함 ※ 보통 다른 언어들에서는 Int타입만 원시값을 갖을 수 있음 열거형 이름 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YVPQj/btrt42bmjYD/y2LdEsBxsOQP2pwIbZRti0/img.png)
열거형은 swift에서 강력한 기능 중 하나입니다. 오늘은 열거형의 정의와 활용법들에 대해 알아보겠습니다! ■ 열거형 연관성이 있는 값을 모아 놓은 것 → 관련 값의 그룹으로 타입을 정의하고, 코드에서는 타입-세이프 방법으로 값을 동작 enum 이라는 키워드 사용 → 내부에는 case 키워드를 이용해 연관항목 나열 가능 열거형을 만들게 되면 하나의 새로운 타입처럼 사용할 수 있음 → 열거형 이름 정의시 대문자 카멜케이스를 사용 열거형 내부 각각의 case 자체가 고유의 값임 → 열거형내 case 정의시 소문자 카멜케이스를 사용 기존 구현을 넘어 기능적 확장도 가능, 표준 기능을 제공하기 위해 프로토콜 준수 또한 가능 enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 … ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dHlGow/btrtYVcLeQy/oVFET4dsf49eipeoMOgl1k/img.png)
오늘은 스위프트의 강력한 기능 중 하나인 확장(익스텐션, extension)에 대해 알아보겠습니다. 재정의를 하지 않고도 기존 타입에 새로운 기능을 추가할 수 있어 매우 유용한 기능인 확장의 특징과 추가 가능한 기능들은 아래와 같습니다. ■ 확장 (익스텐션, extensions) 기존의 클래스, 구조체, 열거형, 프로토콜 타입에 새로운 기능을 추가하는 기능 ※ 단, 기존에 존재하던 기능을 재정의(=오버라이드) 할 수는 없음 익스텐션 키워드를 사용하여 적용 타입만 알고도 그 타입의 기능 확장 가능 ※ 단, 기능을 추가하려는 타입의 구현된 소스 코드를 모르거나 알 수 없어도 가능 익스텐션은 구조체, 클래스, 프로토콜 등에 적용 가능 ※ 반면 클래스의 상속은 클래스 타입에서만 가능 외부에서 가져온 타입에 내가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xakbm/btrtZ6p4w1t/k2s25a0515ssnqS1STQ6k1/img.png)
■ 프로토콜(protocol) - 특정 역할을 하기 위한 메서드, 프로퍼티, 이니셜라이저 등 기타 요구사항 등의 청사진을 정의 - 구조체, 클래스, 열거형은 프로토콜을 채택함으로써 특정 기능을 실행하기 위한 프로토콜의 요구사항을 실제로 구현 가능 -> 이 때 프로토콜이 요구하는 사항(기능)을 모두 충족할 경우, 해당타입이 채택한 그 프로토콜을 모두 ‘준수한다(conform)’고 말할 수 있음 - 프로포콜은 기능을 정의하고 제시만 할 뿐, 자체적인 기능 구현은 불가 (실제적인 구현은 그 프로토콜을 준수하는 타입이 하게됨) protocol 프로토콜 이름 { // 정의부분 // } ■ 프로토콜 특징 - 여러개의 프로토콜을 동시에 채택도 가능 (참고) 클래스에서 상속과 프로토콜 채택을 모두 할 경우 ‘:’ 뒤에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzUD6l/btrtMKn2qON/Rpu4qOkDyGo8yME2KVpGSk/img.png)
■ assert, precondition, guard 앱실행 중 생성되는 다양한 연산 결과값 확인 및 안전한 처리기능 수행 ■ assert 특정 조건을 체크하고, 조건이 성립되지 않으면 메세지를 출력하며 에러를 발생시키게 하는 함수 assert 함수는 디버깅 모드에서만 동작 ※ 단, 배포하는 애플리케이션에서는 동작하지 않음 assert 함수는 주로 디버깅 중 조건 검증을 위해 사용 → 유효하지 않는 조건이 발생하지 않도록 코드를 설계하기 위함 검증결과가 true이면 코드는 그대로 진행, false일 경우 코드 실행은 종료되고 앱은 종료 → 개발과정에서 실수와 잘못된 가정을 찾는데 도움이 되고 실행 문제를 감지하는데 도움이 됨 var height: Int = 0 // 검증 조건에 충족하므로 지나감 asse..