2012-06-16 121 views
0

我正在更新使用CoreData的應用程序。在完整版本中,我使用戶可以將他/她自己的數據保存在數據庫中(應用程序填充預先填充的數據庫)。CoreData模型無法正常工作

該應用程序是在Xcode 4.2上編寫的,並且具有iOS 4.1的部署目標,所以在ARC和Storyboard之前。

現在我想稍微更新一下,將部署目標設置爲5.1並將代碼調整爲最新的Xcode,因此實現了Storyboard和ARC,因爲我現在習慣了它,並且我發現它更直觀這段代碼。 因此,我從頭開始一個新項目,構建故事板,並從1.0版本中拖動大部分內容。此外,我已經檢查了「構建階段」選項卡上的「編譯源」和「複製包資源」是否正常,幷包含我拖動的所有內容。

但是,我遇到了數據庫問題。當我嘗試運行應用程序它崩潰告訴我:

'Cannot create an NSPersistentStoreCoordinator with a nil model' 

所以我不知道我在做什麼錯在這裏。我不想更改CoreData模型,因爲一切都保持不變,我沒有添加或刪除任何實體或屬性。所以我認爲只要將舊的modeld拖到新的項目就足夠了。

此處有任何建議嗎?我可以很容易地從頭開始編寫整個codeData的東西,因爲它並不是很複雜,但我相信用戶在創建完整版本並保存自定義數據時會非常煩惱。

任何建議將非常歡迎。提前致謝!

+0

我認爲你需要驗證永久存儲路徑是否正確。看看這個答案從「afrederick」:http://stackoverflow.com/questions/8804541/cannot-create-an-nspersistentstorecoordinator-with-a-nil-model-error –

回答

0

你需要檢查你的AppDelegate方法managedObjectModel。確保它檢索模型(與NSLog聲明一起檢查)。最有可能與一些命名約定做:

NSString *modelPath = [[NSBundle mainBundle] 
    pathForResource:@"Model" ofType:@"momd"]; 
NSURL *modelURL = [NSURL fileURLWithPath:modelPath]; 

檢查專門爲您modelPath

此外,可能發生的情況是,當您導入模型時,並未真正導入所有文件。該模型實際上是一個名爲YourModel.xcdatamodeld的目錄,其中最終的d可能代表「目錄」。在Finder中,您可以右鍵單擊並選擇Show Package Contents以確保所需的文件在那裏(甚至可以更好地使用命令行)。裏面應該有一個叫做YourModel.xcdatamodel的文件(沒有d)。在方面,至少應該有一個文件叫做content(有時也是layout)。它是一個簡單的XML文件。

確保您已將所有這些項目導入到您的項目中!

+0

不久後我發佈了我的問題注意到Xcode編輯器頂部的路徑顯示了兩種數據模型的不同之處。在「老」它顯示了一個進一步的文件,所以我想檢查包的內容。我已經做了1:1的副本,它工作得很好。 – Marcal