-
-
[iOS] CodingKey 란?iOS/🍎 Documentation 2021. 5. 25. 01:34
선수 지식 : Codable 안녕하세요🐶 오늘은 Codable 프로토콜에서 커스텀 키 매핑 등의 용도로 사용하는 CodingKey 프로토콜에 대하여 다루어 보려고 합니다. 공식 문서를 살펴보던 중 이 프로토콜에 대한 설명이 나와있어 이것을 정리해보겠습니다. 막상 CodingKey 문서에는 설명이 전혀 없었던... struct Coordinate: Codable { var latitude: Double var longitude: Double var elevation: Double enum CodingKeys: String, CodingKey { case latitude case longitude case elevation } } 위 코드와 같이, Codable 타입은 CodingKeys 라는 이름을 가진 ..
-
[iOS] Object Graphs 와 Archives, 그리고 SerializationiOS/🍎 Documentation 2021. 5. 24. 18:54
이 글을 통해 알게 되는 것들 Apple 공식 문서에 등장하는 Object Graph 이란? Archives 란? Serialization 이란? 개요 제가 Object Graph 를 검색하게 된 계기는 NSKeyedArchiver 의 타입 메서드인 archivedData(withRootObject:requiringSecureCoding:) 의 설명에서Object Graph 라는 단어를 발견했기 때문입니다. 이것은 플랫폼에 종속적인 용어가 아니기 때문에 여러 객체 간의 관계를 가리키는 가리키는 그래프 라는 정도의 대략적인 개념은 알고 있었지만, 애플 공식 문서에서 설명하는 자료를 찾고 싶었습니다. 마침 그런 문서가 있었고, 이 문서를 정리하게 되었습니다. 추가적으로 Archives 와 Serializat..
-
[iOS] does not implement methodSignatureForSelector: -- trouble aheadiOS/🛠 이슈와 궁금증 2021. 5. 24. 01:49
2021-05-24 01:46:51.846363+0900 DataPersistence[26819:4680912] *** NSForwarding: warning: object 0x6000004e77b0 of class 'DataPersistence.Language' does not implement methodSignatureForSelector: -- trouble ahead 문제가 발생한 클래스에 NSCoding 프로토콜을 채택 (conforming to NSCoding Protocol)하면 해결된다. 위 로그에서는 Language 클래스에서 발생했다. 끝! 🤖🟢[우짱의 iOS 블로그]🔵💻 iOS를 공부하면서 배운 내용을 기록하고 있습니다.
-
[iOS] NSCoding 이란? (feat. 인코딩, 디코딩, 아카이빙)iOS/🍎 Documentation 2021. 5. 23. 20:48
안녕하세요. 오늘은 공식문서에서 설명하는 NSCoding 를 공부해보겠습니다🐶 NSCoding protocol NSCoding NSCoding은 클래스가 encoding 과 decoding 되는 것을 가능하게 해주는 프로토콜입니다. 다시 말하면, NSCoding 을 채택한 클래스는 encoding 과 decoding 이 가능해집니다. 인코딩은 기존의 형식을 다른 형식으로 변환하는 것을 가리킵니다. 예를 들어 Swift 의 Struct 인스턴스를 JSON 형태의 문자열로 변환시키는 것은 JSON Encoding 이라고 부를 수 있습니다. 디코딩은 그 반대입니다. 그리고 Encoding 과 Decoding 은 아카이빙(Archiving) 과 디스트리뷰션(Distribution) 에 필요합니다. 개요 프로토콜..
-
[iOS] KVO 란? (Key Value Observing)iOS/🤖 App 2021. 5. 22. 19:55
1차 수정: 2021/06/08 안녕하세요. 이번 시간에는 KVO 에 대해 공부해보겠습니다🐶 Observing 이라는 단어는 감시한다는 의미를 가지고 있죠. 그렇다면 KVO는 무엇을 감시하는 것일까요? 바로 다른 오브젝트의 속성입니다. KVO 는 B 라는 오브젝트의 속성 값이 변경되었을 때, A 라는 오브젝트가 알게 되는 것입니다. KVO는 모델 레이어와 뷰 레이어 같이 논리적으로 분리되어 있는 오브젝트간 메시지 전달에 유용합니다. 예를 들어 모델 레이어에서 값이 변경되면, 감시하고 있던 뷰 레이어에게 전달되어 변경에 대응할 수 있는 것입니다. 감시할 속성에 표시하기 class MyObjectToObserve: NSObject { @objc dynamic var myDate = NSDate(timeInt..
-
[Swift] 프로토콜 총정리iOS/🟠 Swift 2021. 5. 22. 15:11
[ 프로토콜 개요 ] - https://woozzang.tistory.com/44 요약: 프로토콜은 요구사항이며, 프로토콜을 채택한 형식은 요구사항을 반드시 구현해야합니다. [ 속성 요구사항 ] - https://woozzang.tistory.com/45 요약: 프로토콜에서 속성은 가변성과 상관없이 반드시 var 키워드만 올 수 있습니다. [ 메서드 요구사항 ] - https://woozzang.tistory.com/48 요약: 메서드 요구사항의 규칙은 속성 요구사항과 유사합니다. [ 생성자 요구사항 ] - https://woozzang.tistory.com/53 요약: 생성자는 클래스의 경우 상속에 대비해 구현시 `required` 키워드를 붙여야 합니다. [ 서브스크립트 요구사항 ] protocol ..
-
[iOS] - Cocoa Touch 에서 JSON 다루기iOS/🤖 App 2021. 5. 7. 23:27
1차 수정: 2021.05.25 JSON = JavaScript Object Notation 🤔 사전 지식 - JSON 이란? 단순하게 데이터를 표현하는 방법 중 하나이다. (통신 방법도 아니고, 프로그래밍 문법도 아니다. 포맷이다 !!!!) 서버와 클라이언트 간의 데이터 교환에서 일반적으로 많이 사용된다. 클라이언트가 API Request 를 보내면 서버가 응답으로 JSON 데이터를 보내준다. JSON의 포맷은 자바스크립트 객체 표기법을 따른다 key - value 쌍을 이루어 표현하며, key는 문자열이다. 문자열은 " " 쌍따옴표를 사용하여 표기한다. { } 와 내부에 key-value 로 구성된다. 즉 Swift 딕셔너리와 유사한 구조이다. JSON형식에서는 null, number, string,..
-
[Swift] - Capturing Values by Closures (값을 캡처하는 클로저)iOS/🟠 Swift 2021. 5. 7. 15:49
클로저는 스코프 밖의 값에 접근할 때 값을 캡처합니다. 클로저에는 Named clousure 과 Unnamed closure 가 있지만, 여기서는 Unnamed closure 를 가리킵니다. 참고로 Named clousure 중 global function 는 값을 캡처하지 않습니다. 값을 캡처한다는 의미는, 값의 참조를 획득한다는 뜻입니다. 따라서 참조된 값을 클로저 스코프 내부에서 변경되면, 실제 값도 변경됩니다. var count: Int = 0 print(count) // "0" var closure = { count += 1 // 스코프 외부의 값(count)에 접근하였으므로, 참조를 획득하였습니다. } print(count) // "0" :::: 클로저를 선언만 했을뿐, 호출하지는 않았습니다...