2014-09-13 58 views
5

我最近下載的iOS 8,以確保我現有的應用程序正常運行它,但我上推出得到一個警告,在調試器:核心數據:無法加載一個名爲「CDAccount」類

"CoreData: warning: Unable to load class named 'CDAccount' for entity 'CDAccount'. 
Class not found, using default NSManagedObject instead." 

經過一番研究,似乎人們在Swift中使用核心數據時有類似的問題,但我所有的代碼都在Objective-C中(並且數據模型至少在6個月內沒有改變)。

任何建議非常感謝,我真的很緊張,我的應用程序不會正常工作,一旦人們開始升級到iOS 8!

+0

不知道這個,但你肯定你的類是你正在建設目標中的一員? – fzaziz 2014-09-13 04:34:14

+0

您在應用程序中使用社交或帳戶框架嗎? Accounts框架內部使用Core Data,如果內存服務,則CDAccount是在公共接口中支持ACAccount對象的Core Data實體。 – quellish 2014-09-13 06:42:42

+0

真的嗎?你能把我鏈接到文檔嗎?我無法找到它。 – Mason 2014-09-15 01:41:52

回答

16

我在Objective-C和Xcode 6中有完全相同的問題。出於某種原因,Xcode從我的編譯源中刪除了我的'CustomNSManagedObject'.m類。

轉到你的項目目標 - >構建階段 - >編譯源代碼,並使用+按鈕添加CDAccount.m

如果使用Mogenerator創建_CDAccount.m文件,添加到您的編譯源代碼以及。

+8

我的對象已經在編譯源,我仍然在Xcode 6 – PostCodeism 2014-10-17 11:27:07

+0

@PostCodeism中看到錯誤,請參閱Lucien發佈的相關答案。它爲我做了詭計:http://stackoverflow.com/questions/25076276/unabled-to-find-specific-subclass-of-nsmanagedobject – 2014-11-10 17:06:08

+0

這解決了我的問題。但是,我沒有使用Build Phases來添加源代碼,而是點擊了作爲項目文件列出的.m文件,然後在Utilities面板> File Inspector下檢查了Target Membership。爲什麼XCode刪除.m文件是非常奇怪的。也許它從一開始就不會被添加。除了一些@dynamic語句之外,.m文件中沒有太多內容。 – Brainware 2015-01-18 20:12:40

2

它似乎是一個Xcode錯誤/問題。我使用的Xcode 6.3.1

  • 點擊您的核心數據實體(xxx.xcdatamodeld),然後選擇實體,並在屬性檢查器中,你會看到實體的類名設置爲: PRODUCT_MODULE_NAME.xxx,其中'xxx'是您實體的名稱。

解決方案:您必須將PRODUCT_MODULE_NAME替換爲應用的名稱。

如果對應用程序的名稱疑問,請在「構建設置」,過濾器上的「product_module_name」,你會「包裝」

    在某些情況下
  • (我的情況)下找到你的應用程序名稱數據模型文件(swift或objective-c)也被Xcode從項目中刪除 - 它仍然在磁盤上,但是你需要再次添加它。因此,在這種情況下,採取「CDAccount.m」文件&再次下降在您的項目(或使用其他的幾種方法可以做到這一點)
7

配置中刪除了「點」,「默認」上。 xcdatamodeld:

enter image description here

到:
enter image description here
enter image description here
重建應用程序。

+1

感謝您的支持。我嘗試了所有其他修補程序(這些修復程序都很容易在許多不同但類似的問題中找到,最終解決了我的問題,經過幾個小時的頭痛之後。 – Amos 2017-10-05 12:56:10

+1

對於我來說,添加點有所幫助。 – Gamec 2018-01-23 10:16:29

0

我的問題是類似的,但列出的解決方案不起作用,因爲我的CD類存儲在一個框架。解決方案是將類名稱表示更改爲「frameworkName.className」。但是,xcdatamodeld不允許我將其更改爲該文件,因此我必須在文件上顯示「內容」,在XCode中打開「內容」文件,並自行進行更改。

2

我的問題也是類似的,但原因是沒有設置實體模塊。

module selection in Entity properties menu

相關問題