2009-10-11 108 views
6

看起來最近的Xcode 3.2增加了一些代碼生成細節(我認爲)缺少雪豹之前的版本。Xcode 3.2.1 - 爲什麼核心數據生成的類會導致生成錯誤?

我採取了以下措施:

  1. 定義有幾個實體的簡單.xcdatamodel模型,包括一個(可逆)之一:一對多的關係(一個Endpoint有許多Subscription對象)

  2. 文件 - >新建並選擇(無圖標)「託管對象類」。從那個嚮導中,我選擇了我的課程,然後我參加了比賽。

  3. 直到那是我試圖建立。我得到這樣的結果並不能弄清楚:

未定義的符號: 「_OBJC_METACLASS _ $ _ NSManagedObject」,從引用: _OBJC_METACLASS _ $ _認購在認購-B5BE258DF28BC03B.o _OBJC_METACLASS _ $ _端點的端點。 Ø 「_OBJC_CLASS _ $ _ NSManagedObject」,從引用: _OBJC_CLASS _ $ _認購在認購-B5BE258DF28BC03B.o _OBJC_CLASS _ $ _端點Endpoint.o LD:符號(S)沒有發現 collect2:LD返回1個退出狀態

我喜歡什麼幫助:

  1. 如果任何人有什麼,我只是做了錯誤的任何想法,那簡直是太棒了。

  2. 它看起來像獲得Xcode *重新*生成您的類的唯一方法是文件 - >新並重新替換它們,其中(除其他外)導致新類和舊的重複引用無用地將類文件留在項目的移動文件夾中。任何人都知道如何保持這些同步正確?我還沒有發現任何涵蓋新功能的Apple文檔。

回答

25

您是否將CoreData.framework添加到您的項目(或意外刪除它)?這可能是鏈接錯誤的來源。

此外,我建議您查看Wolf Rentsch的MOGenerator。對於使用代間隙模式的核心數據類,這是一個功能更強大的代碼生成器。它可以在保存xcdatamodel時自動重新生成類,同時保留自定義代碼。

+0

感謝您的回覆。我以爲我有,但有可能我錯過了它。我簡單地看了一下MOGenerator,但我沒有花時間去評價它,因爲它看起來像Apple剛剛在Xcode 3.2中加入了類似的功能,並且不想在工作流中添加突然過時的工具。鑑於Xcode功能甚至沒有真正的記錄,我不妨花時間瞭解MOGenerator。謝謝! –

+0

正在努力獲取MOGenerator,並且只是給所有查看此問題的用戶提供的參考資料,截至2009年10月13日,Xcode 3.2.x已打破xmo'd集成:http://www.openradar.me/7289446 –

9

發生這種情況的最簡單(也是最頻繁,最容易忽視)的方式是,如果您意外生成一組新的MOC類而不移除對舊的引用(可能位於項目中的其他組中) 。在我意識到這正是我所做的事情之前,我只是花了太長時間纔將自己的頭撞向XCode。

+1

究竟是什麼發生在我身上。重新生成託管對象類,但忘記更改導致項目中同一文件的兩個引用的目標文件夾。 –