2009-10-13 49 views
1

我下面this how-to落實在我的應用程序的核心數據存儲:可可觸摸,核心數據:獲取異常嘗試insertNewObjectForEntityForName時:inManagedObjectContext:

我有一個Model.xcdatamodel它定義了一個Something模型。我使用XCode爲該模型生成了一個類。
我已經導入了類在我的.m文件,其中我想:

Something* s = (Something *)[NSEntityDescription insertNewObjectForEntityForName:@"Something" inManagedObjectContext:managedObjectContext]; 

但是,這將導致以下錯誤: 2009-10-13 21:18:11.961 w9a[4840:20b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'Something''

我缺少的東西?

+0

你確定你的'managedObjectContext'與包含'Something'實體管理對象模型'persistentStoreCoordinator'實例?換句話說,您確定您已經正確構建了整個Core Data堆棧嗎? – 2009-10-13 19:38:50

回答

4

個人而言,我更喜歡下面的方法:

// With some NSManagedObjectContext *context 
NSEntityDescription *desc = [NSEntityDescription entityForName:@"Something" 
             inManagedObjectContext:context]; 
Something *s = [[[Something alloc] initWithEntity:desc 
        insertIntoManagedObjectContext:context] autorelease];

我發現這是不容易隨意核心數據錯誤,更容易調試。它實際上和你的代碼做同樣的事情,但是首先顯式獲取一個實體描述,所以如果需要的話你可以單獨調試它。

1

似乎你沒有在你的對象模型中名爲「Something」的NSManageObject ...你是否在對象模型中創建實體?我不確定是否需要生成代碼,但是您可以讓xcode通過點擊實體並自動從菜單中選擇託管對象來自動執行此操作。

+0

我不確定我完全理解你在問什麼,但我確認我的模型中有項目(在XCode中打開的.xcdatamodel文件),我也有生成的類,它已導入。我也檢查了名稱的拼寫,他們是正確的。 – Prody 2009-10-13 18:38:08

+0

多數民衆贊成我是問 – Daniel 2009-10-13 18:43:01

+0

這就是奇怪,通常當我看到這個錯誤只是拼寫錯誤的實體名稱或類似的 – Daniel 2009-10-13 18:43:32

0

發現我的問題,NSManagedObjectContext由於某種原因未正確初始化。我已經重新編寫了這些代碼,現在看起來可行。

不管怎樣,謝謝:)