我有什麼似乎是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