使用 Core Data
Thomas Mak wrote at 2021-04-18.
Keywords:
- PersistentContainer
- PersistentStore
- PersistentStoreCoordinator
- Entity
- EntityDescription
- Context
- Managed Object
Managed Object code generation
- Class Definition: 全部 Xcode 管理
- Category/Extension: 自己定義 NSManagedObject subclass,Xcode 管理 Extension
- Manual/None: 自己定義 NSManagedObject subclass 及 Extension
自己管理越多,彈性越大,但亦越要自己動手寫。
新增記錄
let entity = NSEntityDescription.entity(forEntityName: "Friend", in: persistentContainer.viewContext)
let friend = Friend(entity: entity!, insertInto: persistentContainer.viewContext)
friend.name = "Jack Chan"
friend.tel = "66661234"
self.saveContext()搜尋記錄
let fetchRequest:NSFetchRequest<Friend> = Friend.fetchRequest()
do {
let results = try persistentContainer.viewContext.fetch(fetchRequest)
print(results.count)
for friend in results {
print(friend.name)
print(friend.tel)
}
} catch {
print("Fetch error.")
}刪除
persistentContainer.viewContext.delete(friend)
保護層級
- NSFileProtectionComplete
- NSFileProtectionCompleteUnlessOpen
- NSFileProtectionCompleteUntilFirstUserAuthentication
- NSFileProtectionNone
Apple iOS Security Guide: https://www.apple.com/business/docs/iOS_Security_Guide.pdf
設定 File Protection Tips:
- Enable File Protection using the Capabilities tab on your app target
- If you do not want the default NSFileProtectionComplete, change this setting in the developer portal under your app id
- Make sure Xcode has the new provisioning profile this creates.
- For protecting files your app creates, that's it.
- To protect Core Data, you need to add the NSPersistentStoreFileProtectionKey: NSFileProtectionComplete option to your persistent store.
storeDescription.setOption(FileProtectionType.completeUnlessOpen as NSObject, forKey: NSPersistentStoreFileProtectionKey)
container.persistentStoreDescriptions = [storeDescription]
Comments
no comments yet.