我目前正在加密核心数据存储。
最终目标是拥有一个具有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 问题,以帮助我了解我现在在正确时间使用这两个商店的点,并将它们合并到当前级别,包括但不限于以下内容:
https://developer.apple.com/documentation/foundation/nsfileprotectiontype?language=objc