2012-11-15 20 views
2

我重新排列了我的程序文件夾中的文件,將它們分組到相應的子文件夾中。我確信它們都顯示在編譯的源代碼列表中,包括'xcdatamodeld'文件。核心數據模型文件不在捆綁中

但是,創建一個管理對象模型不與下面的代碼工作:

if (mom_ != nil) { 
    return mom_; 
} 

self.mom = [NSManagedObjectModel mergedModelFromBundles:nil]; 

return mom_; 

我檢查[NSBundle mainBundle],特別

[[NSBundle mainBundle] pathForResource:@"Words" ofType:@"xcdatamodeld"] 

[[NSBundle mainBundle] pathForResource:nil ofType:@"xcdatamodeld"] 

他們都返回零。當我通過名稱和類型檢查他們時,我可以看到其他資源在那裏。

應用程序包文件中有一個名爲「Words.momd」的文件夾。

可能發生了什麼以及如何解決?

回答

2

嘗試使用:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Words" withExtension:@"momd"]; 

你想加載編譯數據模型與xcdatamodeld文件對比:

數據模型是部署資源。除了模型中實體和屬性的詳細信息外,您在Xcode中創建的模型還包含關於該圖的信息 - 其佈局,元素的顏色等。後面的信息在運行時不需要。使用模型編譯器momc編譯模型文件,以刪除無關信息並儘可能高效地使運行時加載資源。

source

+0

這解決了這個問題,並可能是我想在未來的發展中使用。我在閱讀文檔時看到過,但錯過了這一點。我仍然不知道爲什麼mergeModelFromBundles不起作用。過去我沒有用過它。 – Jim

0

可以使用MagicalRecords框架吧:

https://github.com/magicalpanda/MagicalRecord

和設置你的數據庫中的一行代碼:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Words"]; 
+0

這可能是使用後,但它並沒有告訴我是怎麼回事什麼。 – Jim