2011-05-02 23 views
0

Xcode爲您的NSMO實體自動生成類實現 - 很好。如何修改可以在Bindings中訪問的可重用方式的NSManagedObject類的行爲?

但我們經常需要對它們進行定製。如果你忘記了自定義這些文件,Xcode會高興地「刪除」(覆蓋)並刪除所有代碼。

所以...經典的訣竅是:

  1. 創建NSManagedObject在蘋果的模式視圖
  2. 生成類
  3. 創建其使用類別來擴展原始類的新類,添加修改行爲​​
  4. 導入定製化類別頭,而不是基地NSMO頭,從而讓「新」的行爲

這很好用:把自定義代碼放在類別中,當你使用Xcode自動生成文件時,你永遠不會失去任何東西。

但是......現在我正在使用Bindings/Mac OS代碼,並且綁定很棒,但我不知道如何使綁定「導入」派生頭(與類別和修改的方法/自定義行爲)?

例如如果我有一個持有NSMO實例的ArrayController(非常常見),通常會告訴它「實體名稱」(例如「MyCoreDataEntity」),並且它會向該NSMO請求該類名稱。但是這不會加載類別,所以它永遠不會選擇該類的定製版本。

你如何解決這個問題?或者:你如何加載類別的類別版本?

OR:如何在不使用類別和AVOID的情況下編寫自定義代碼?感覺如何,Xcode會刪除所有代碼?

回答

0

我必須承認,因爲我使用可可觸摸沒有可用的綁定 - 所以我真的不知道我的建議是否適用於您的情況。

但是,這可能有幫助嗎?

有一個核心數據添加類別的替代品 - 不像類別「複雜」 - 我知道。

人們可以使用#include語句:

有兩個備選方案:

  1. 創建一個新的ClassFile的,刪除包括 「header.h」(刪除header.h),放在那裏額外的代碼。它編譯但帶來了兩個警告:(這是可以理解的)[警告]警告:沒有規則來處理架構armv6的文件類型文件'$(PROJECT_DIR)/ Classes /../ included_dataStuff'[WARN] warning:no rule to處理文件'$(PROJECT_DIR)/ Classes /../ included_dataStuff'用於構建armv7的文本類型

  2. 創建一個新的「空白」文件並在其中放置額外的代碼。這不會產生任何警告。

1和2之間的差異在於,儘管代碼格式化保持在第一alternatve(具有接受2個警告)在所述第二所有的代碼格式將丟失,它像普通的文本處理(但有是沒有警告)

我想我會更喜歡第一個。當然,對生成的代碼文件的唯一修改是#include語句。

+0

因此......每次您重新生成代碼時,您都必須記得手動編輯它並#include包含自定義代碼的文件? – Adam 2011-05-02 21:22:00

+0

是的,到目前爲止,我就是這麼做的。不過,我正在研究開始前的預執行或其他任何方式來添加我自己的小預處理。這樣我可以節省很多工作,因爲可以添加更多的自動化任務。您是否知道這是否可以使用xCode4中的預執行完成? – user387184 2011-05-02 22:02:56

0

最簡單的解決方案是子類NSArrayController,導入類別,然後在IB中使用子類。這樣你的綁定應該自動知道這個類別。

MoGenerator以前擅長生成自定義類而不必重寫任何東西。我正在修改它或類似於Xcode 4.x的東西,因爲原作者似乎沒有時間這樣做。

+0

這是個狡猾,好主意。回覆:Xcode4 - 我的猜測是,蘋果將「最終」添加體面的CoreData支持......他們已經刪除了一些Xcode3的核心功能,並沒有提供替代品,這表明他們已經有了更好的計劃。雖然可能有一段時間... – Adam 2011-05-02 21:20:40

相關問題