我有什么似乎是OS X 10.7.1中的核心数据的错误。核心NSPersistenceFrameworkVersions 251和358之间的数据迁移失败
我的数据存储(NSSQLiteStoreType)未被正确自动迁移。
作为一个侧面说明,iOS版本的应用程序使用完全相同的Core Data模型。
- >这是看来正在发生的事情。
直到最新发布的一切都已经工作正常 -
我有模型的14个版本 - 模型13已经推出了无事相当长的一段时间。
最近我更新了我的应用程序,并添加了一个新的模型,所以我在14(这是现在在运输应用程序中使用的版本)。
当从模型13迁移到14时,iOS版本工作得很好 - 所以不需要担心。
因此而不是谈论OS X版本让使用NSPersistenceFrameworkVersions
NSPersistenceFrameworkVersions 251是10.6.8和NSPersistenceFrameworkVersions 358是10.7.1
如果我们使用像版本 - 这意味着模型13版251和迁移模型14版本251它工作正常。如果我们用模型13版358并迁移到模型14版本
也是如此358也能正常工作
这里是它变得有趣
如果我们迁移模型13版358模型14版251它仍然能正常
但是从模型13版251迁移到14版型358确实不工作
CoreData:错误:(1)I/O为d错误atabase at blah。 SQLite的错误代码:1,'没有这样的列:FOK_REFLEXIVE'
这只会发生在从10.6.8(NSPersistenceFrameworkVersions 251)到10.7.1(NSPersistenceFrameworkVersions 358)时,所有其他排列都可以正常工作。
这里是用于迁移的选项,它被传递给addPersistentStoreWithType。
// Allow inferred migration from the original version of the application.
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
最后一点,如果我们只将属性添加到模型14的转换将不突破出现。只有增加一个会导致它破裂的实体。
其他人看到这类问题。 -提前致谢。
我一直在使用iOS 5核心数据测试版遇到类似问题。我已经能够通过删除该项目并重新创建它来解决此问题,但无法保存所有数据。 – Jason
@Jason - 您是否找到了解决方案 - 丢失数据对我来说不是一个真正的选择! :) – deanWombourne
我真的黑了核心数据,所以如果表没有列,我通过直接SQLite操作手动添加它。它不漂亮,但它完美的作品。 – Jason