2011-05-03 193 views
1

已經有一些堆棧溢出的輕量級遷移問題,但其中大多數在混合中都有額外的扳手。我正在做最基本的遷移,並且失敗了。過去幾次我沒有做過這樣的事情,所以這變得非常令人沮喪。感覺這可能是Xcode 4的一個問題,在使用Core Data時這很糟糕。輕量級遷移失敗

我有我的舊模型版本(實際上是一些舊版本)和標記爲活動的新版本。我已經設置了兩個選項布爾值,自動遷移並推斷:

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

我的最後一個活動的模式和我的新的唯一區別是一個新的屬性(日期),這是可選的。據我所知,一個新的可選屬性不應該導致輕量級遷移的任何問題。

我運行的應用程序,我得到「無法找到或自動推斷映射模型遷移」這似乎是荒謬的。只有一個變化 - 它是可選的!

我缺少什麼?這一定是愚蠢的。

+0

也許你們中的一個模特不是你正在跑步的目標的成員? – sgosha 2011-05-03 20:04:07

回答

1

如您所述,只需添加一列不應引起該錯誤。例如,如果取消設置可選字段(CoreData然後不知道如何處理現有的NULL值)或更改字段類型,通常會引發此錯誤。這不是你的情況。你可能不小心點擊某處...

要診斷髮生了什麼,請用你的@try{}@catch{}代碼,我想你已經在做,並給看看逮住異常e.userInfo財產,大部分時間CoreData提供有關的所有細節是什麼引起了錯誤,比如哪個Field,哪個原因......這可能有幫助!

您也可以簡單地刪除最後的模型版本並重新創建它,因爲只有一個小的變化。

+0

在嘗試解決問題而沒有成功(包括刪除模型並重新創建幾次)之後,我最終放棄了並做了我需要做的事情,而無需更改數據庫模型。我仍然會將此標記爲答案,因爲對於試圖調試愚蠢的核心數據問題的任何人肯定會有一些有用的信息。 – 2011-05-05 19:03:26

+0

我討厭當有人(包括我)需要像這樣死去的時候,你能粘貼來自Core Data Exception的userInfo,那裏*必須*有一些有趣的東西!如果沒有,向蘋果公司提交的錯誤報告應該有所幫助無論如何,謝謝你接受我的答案。 – 2011-05-05 20:35:08