2012-05-27 40 views
0

我創建了我的模型的新版本並將其設置爲我的當前模型。我添加了兩個新實體,其中一個實體依賴於父實體。核心數據遷移 - 已添加實體

設置我的商店

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

當我加入以下代碼,我創建了一個映射模型 - 源我的舊模式和目標我的新模式。 但是,應用程序在啓動時仍然崩潰。我想我在這裏錯過了一些東西。我試過瀏覽蘋果文檔,但仍然無法完成。

+0

崩潰的控制檯輸出是什麼?正如一個將NSInferMappingModelAutomaticallyOption設置爲YES的旁註意味着您不打算使用映射模型。如果你想使用映射模型,你需要將它設置爲NO。 – svena

+0

嗨,我把它設置爲否,不知道我是否需要做其他任何事情。我設置異常斷點,我得到這個: #0 0x02a7fcf0在objc_exception_throw() #1 0x01926ab7在+ NSEntityDescription entityForName:inManagedObjectContext:]。( –

+0

是否控制檯輸出顯示任何東西它應該 – svena

回答

0

當您使用修訂後的核心數據結構進行更新時,您需要使用新數據結構更新舊數據結構。由於舊文件已存在,因此您的.mod文件和其他文件不會重新創建,因此即使您的代碼具有新實體,安裝在用戶設備中的應用程序也會包含舊數據結構,並且當您在新數據結構中爲這些實體啓動查詢時,應用程序無法找到。所以它最終崩潰。

因此,您可以刪除僅用於測試目的的應用程序。 如果您正在創建新版本的應用,請參閱this link