Written by
amy
on
on
iOS SDK 탐구생활
사용했던 iOS SDK + 기타 지식 창고
Core Spotlight
- On - Device Index :: Core Spotlight
- SIRI / SAFARI 를 통한 검색을 가능하게 해주는 Core Spotlight (iOS 9.0+)
Target
>Linked Frameworks and Libraries
에CoreSpotlight.Framework
추가- 사용시
import CoreSpotlight
- Index the content in apps that handle persistent user data, such as documents and photos, and let users deep-link to it from Spotlight and Safari search results. Add, update, and delete searchable app content.
Cloud Kit
- Store structured app and user data in iCloud containers that can be shared by all users of your app.
- Apple developers guide
- Raywenderlich cloudkit tutorial
→ CKRecordValue
- The protocol that provides strong type checking for objects that the CloudKit framework stores on the server.
- Apple developers guide
- The following classes adopt this protocol and are supported by CloudKit ::
- NSString, NSNumber, NSArray, NSDate, NSData
- CKReference, CKAsset, CLLocation
NSCoding
- A protocol that enables an object to be encoded and decoded for archiving and distribution.
- @pkh 사수님의 보충 설명: Deepcopy를 하더라도 결국 메모리 주소를 새로 만들어서 데이터를 copy하는 것. NSCoding을 통하면 인코딩과 디코딩을 통해 단일 샌드박스 내부가 아니라 위젯, 워치 등 앱 간 데이터 이동이 가능해진다.
- Apple developers guide
NSKeyedUnarchiver
- A decoder that restores data from an archive referenced by keys.
- Apple developers guide
kUTTypeText
- The type identifier for all text-encoded data, including text with markup (HTML, RTF, etc.).
- Apple developers guide
FileManager
- An object that provides a convenient interface to the contents of the file system.
- Apple developers guide
→ FileManager로 create directory 할 때 꿀팁
- URL에서
.absoluteString
을 사용하면file://
prefix 를 생성해버린다. - 이것은 directory를 만들 때 실패 원인이 되므로,
.path
를 사용하자.
let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let dataPath = documentsDirectory.appendingPathComponent("someFolder")
do {
try FileManager.default.createDirectory(atPath: dataPath.path, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
print("Error creating directory: \(error.localizedDescription)")
}
→ createDirectoryAtURL
- FileManager로 디렉토리를 새로 만들 때 아래 argument 주의!
- createIntermediates → If YES(True), this method creates any non-existent parent directories as part of creating the directory in url. If NO(False), this method fails if any of the intermediate parent directories does not exist.
PropertyListSerialization
- An object that converts between a property list and one of several serialized representations.
- Apple developers guide
- Toll-Free Bridging
GCD
- Serial Dispatch Queue: FIFO 방식으로 Queue에 대기하는 작업을 순차적으로 처리하는 방식이다. 하나의 작업이 Thread에 의해 실행중이면 다른 작업은 Queue 내부에서 대기하고 있다.
- Concurrent Dispatch Queue: 큐에 들어오는 작업을 동시적으로 별도의 Thread에서 처리하는 방식이다. 실행되는 Thread의 개수는 시스템 상태에 따라 달라지며, OS에서 알아서 관리해준다.
- Swift에서 GCD 사용하기