如何检索由具有不正确 CoreData 架构的更新 iOS 应用程序导致的数据丢失

Posted

技术标签:

【中文标题】如何检索由具有不正确 CoreData 架构的更新 iOS 应用程序导致的数据丢失【英文标题】:How to retrieve data loss caused by an updated iOS app with incorrect CoreData schema 【发布时间】:2013-03-14 00:54:51 【问题描述】:

CoreData 架构出现错误会导致用户在升级其 ios 应用后,使用先前架构的数据无法再看到数据。恢复以前数据的最佳方法是什么?

【问题讨论】:

【参考方案1】:

如果您使用轻量级迁移,新架构将替换原始架构。迁移后原始数据不再是数据库的一部分。

您可以为尚未升级的用户发布具有原始架构的新版本。对于那些你可以使用NSMigrationManager 将它们迁移回来。一旦每个人都再次使用旧架构,您就可以正确发布具有新架构的版本。

【讨论】:

谢谢理查德。确定谁已升级到新架构以及谁拥有原始架构的最佳方法是什么? 如果你设置了模型版本,你可以这样做: NSDictionary *metadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:@"" URL:urlParam error:error]; NSArray *modelVersionArray = [元数据对象ForKey:NSStoreModelVersionIdentifiersKey]; NSString *modelVersion = [modelVersionArray objectAtIndex:0];

以上是关于如何检索由具有不正确 CoreData 架构的更新 iOS 应用程序导致的数据丢失的主要内容,如果未能解决你的问题,请参考以下文章

在具有 VIPER 架构的应用程序上更新 NSManagedObject

如何更新CoreData中另一个实体的子实体

Swift - 如何在加载 ViewController 之前正确实现 CoreData 的更新/设置

从实体具有 NSSet 的 coredata 中检索数据

CoreData 和 MagicalRecord - 只有当用户点击应用时,我应该如何正确处理更新数据?

coredata - 获取具有最大值的不同行