我從來沒有任何問題與Xcode3,但與Xcode4我得到蘋果的代碼約3失敗時,我更新了一個核心數據模型,與可怕的「持久性存儲遷移失敗,丟失源託管對象模型。錯誤。如何在不破壞Xcode4的情況下正確更新模型?
這裏是我的設置(我是如何配置的項目爲自動遷移):
- NSPersistentDocument,從蘋果公司的模板
- 覆蓋蘋果的模式裝載方法,我唯一能做的是提供兩個標誌在storeOptions字典,這開啓自動遷移
-(BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)url ofType:(NSString *)fileType modelConfiguration:(NSString *)configuration storeOptions:(NSDictionary *)storeOptions error:(NSError **)error
{
NSMutableDictionary *newOptions = nil;
if(storeOptions != nil)
newOptions = [NSMutableDictionary dictionaryWithDictionary:storeOptions];
else
newOptions = [NSMutableDictionary dictionary];
[newOptions setValue:@"YES" forKey:NSMigratePersistentStoresAutomaticallyOption];
[newOptions setValue:@"TRUE" forKey:NSInferMappingModelAutomaticallyOption];
BOOL success = FALSE;
success = [super configurePersistentStoreCoordinatorForURL:url ofType:fileType modelConfiguration:configuration storeOptions:newOptions error:error];
return success;
}
具體的過程我一直在使用(這是已經工作在Xcode4約1錯誤!)
- 選擇模型(Xcode4名爲‘something.xcdatamodel’,用曲折的左側)
- 進入編輯器菜單,選擇「添加新模型版本...」
- 命名新版本1整數比上一個更高 - 例如如果以前是「4」命名新的一個「5」
- 在右側窗格中,改變目前的模型版本,新創建的一個
- 解決方法XCode4錯誤:選擇任何文件,然後選擇新創建的模型。如果你不這樣做,Xcode會在新創建的模型上顯示選擇,但是會編輯以前的模型,這肯定會破壞CoreData中的所有內容。
- 編輯模型;在這種情況下,我正在向現有實體添加新屬性
- 保存。建立。跑。 ... CRASH。
除此之外,正如我所說的,在3中大約2次這個工作正確。一旦它工作了一次,它顯然是很好的 - 輕量級遷移完成後,下一次保存將保存在新的模型版本中。
所以我猜在上面的步驟中我做了一些錯誤的事情,但我已經通過了5次或6次的文檔,看不到任何明顯的東西。這對NSPersistentDocument文檔沒有任何幫助,但是我已經在iPhone上進行了很多次輕量級遷移,所以我對此相當有信心,而且這對我來說似乎是正確的。
其他的事情我已經試過/檢查: - iPhone Core Data Lightweight Migration Cocoa error 134130: Can't find model for source store(沒了;有人被納入只有根xcdatamodel)
崩潰是否會產生任何錯誤? – TechZen
您是否嘗試遷移開發版本? – TechZen
您是否一遍又一遍地使用同一份商店副本,或者每次都是以新副本開始的? – TechZen