2

我目前正在加密核心数据存储。

最终目标是拥有一个具有FileProtectionType.Complete最大保护的存储,但有些任务可能会在后台完成,这意味着受保护的数据不可用,因此无法将其保存到主存储。

我当前的过程是,当受保护的数据不可用时,将更改保存到带有FileProtectionType.completeUnlessOpen.

然后,当受保护的数据再次可用时 ( func applicationProtectedDataDidBecomeAvailable(_ application: UIApplication)),将辅助存储合并回主存储。

这似乎在某种程度上有效,但不是我希望的那样。

例如:

在主商店中,我创建User并设置了名字和姓氏字段。

在后台,受保护的数据变得不可用后,我会更新名字和姓氏字段。由于受保护的数据不可用,因此将其保存到辅助存储中。

当受保护的数据再次可用时,我使用以下内容将两个存储合并在一起:

secondaryStoreCoordinator.migratePersistentStore(secondaryStore, to: primaryStoreURL, options: primaryOptions, withType: NSSQLiteStoreType)

然后这似乎User在主商店中创建了一个新的,而不是像我希望的那样做并更新现有的User.

所以我的问题有两个:

1)这是处理我解释的场景的最佳方法吗?

2) 我将如何着手使迁移更新现有User而不是创建新的?会是创建自定义的情况MigrationManager吗?

我查看了无数其他 StackOverflow 问题,以帮助我了解我现在在正确时间使用这两个商店的点,并将它们合并到当前级别,包括但不限于以下内容:

合并两个 iOS 核心数据持久存储的有效方法是什么?

在后台使用 Core Data 加密

https://developer.apple.com/documentation/foundation/nsfileprotectiontype?language=objc

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html#//apple_ref/doc/uid/TP40004399-CH1-SW1

4

0 回答 0