2011-03-04 18 views
9

我創建了一個項目,不檢查「使用CoreData」。項目名稱是「詞彙表」URLForResource送花兒給人返回nil

現在我改變了主意,因此我添加了一個數據模型usinng Add-> New File-> Resource-> Data Model->給它起名字Glossary-> didn`t select任何類 - >完成。

下一步是設計我的數據模型。然後我將所需的代碼添加到我的AppDelegate。 所有步驟我在下面這個教程: https://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html%23//apple_ref/doc/uid/TP40008305-CH1-SW1

我的問題,現在位於這條線:

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

modelURL總是nill 創建一個額外的一個NSBundle參考,並呼籲mainBundle讓我發現,這是工作,但是我不知道它是否真的是正確的道路。

在創建項目時選擇「使用CoreData」的項目也同樣如此。

有任何人的想法?

回答

0

我不是100%確定,但是URLForResource只對文件有效,momd是目錄。

URLForResource文檔:該方法首先在指定包的非本地化資源目錄中查找匹配資源文件。 (在Mac OS X中,此目錄通常稱爲資源,但在iOS中,它是主包目錄。)如果找不到匹配的資源文件,則它會查找任何可用語言特定的頂級。 lproj「目錄。 (特定語言的目錄搜索順序對應於用戶的偏好。)不通過其他子目錄在這些位置的遞歸。有關更多詳細信息,請參閱Bundles和Localization。

+0

是的,這已經是紅色了,但正如我在教程中發現了這條線,並且當我編寫使用核心數據進行存儲時創建項目時,它工作正常。所以媽媽不應該是一個目錄。我試圖在Finder中搜索momd,但發現者hasen't發現任何東西(沒有目錄或文件)。那麼對我來說那是很奇怪的:) – Jonas 2011-03-04 20:12:58

+0

哎喲,我的錯誤,我剛剛更換momd與.xcdatamodel [d]在我的腦海裏,很抱歉的混亂。 – robertvojta 2011-03-04 20:19:58

11

它與model versioning有關。你想添加一個版本模型(項目在Xcode項目樹將有.xcdatamodeld擴展名),那麼你的代碼將平穩運行。

在Xcode 4中,當您添加一個新的Core Data文件時,默認情況下會進行版本控制。即使在創建項目後添加了Core Data支持。

如果您不打算購買型號版本,只需在您的代碼中使用.mom即可。

+0

是的!謝謝!我今天被困在那個3小時。我不想爲我已經爲OS X創建的應用的iOS版本創建新模型,因此我在我的新iOS應用程序中選中了「使用核心數據」,然後拋出xcdatamodeld文件並將其替換與我的舊OS X應用程序的xcdatamodel。如果蘋果公司選擇較少的蹩腳擴展來使差異更明顯,那將會很好。 – ArtOfWarfare 2013-04-11 22:45:28