2010-11-07 226 views

回答

1

假設您在此討論NSManagedObject的子類,setter/getters由CoreData提供。

+0

是由模型映射自動生成的子類嗎?或者我們手動創建? – Arcadian 2010-11-07 03:40:56

+0

通常,您首先創建一個實體,然後在Xcode中創建模型類時,將它指向您創建的實體併爲您生成NSManagedObject的一個子類。 – 2010-11-07 04:13:56

0

兩個不同的東西:

  • 如果你在談論@dynamic在由數據建模者表示核心數據實體生成的類使用,那麼實現由核心數據生成的爲好。你無法訪問它們。我認爲你可以重寫並放入自己的位置,但我沒有調查過。所以一般來說不要擔心它們。

  • @dynamic在您定義的類中使用(不是核心數據)意味着您將輸入屬性的getter和setter。在文檔中有很多這些應該是什麼樣子的例子。一般來說,如果你不打算將屬性的值存儲在一個變量中,會以某種方式首先轉換它,或者需要將其他一些處理掛鉤到getter/setter概念中,那麼只會這樣做。

+0

不確定你的意思是「輸入」getter/setter。但是像你所描述的自定義getter/setter並不意味着他們是@dynamic。 @dynamic意味着你在編譯時根本沒有提供getter/setter,但是你承諾稍後在運行時介紹它們(或者處理forward)。對於一個正常的自定義getter/setter(計算,轉換,無論),你既不指定@synthesize也不指定@dynamic。 – 2010-11-07 04:19:11

+0

是的,你不需要做@syntheize或@dynamic聲明。我也只是檢查了目標C doco,它說「...通過直接或在運行時提供方法實現...」,這意味着你編寫它們(鍵入)或其他機制生成它們(例如核心數據) 。如果我正在實施,我總是會放入@dynamic聲明。沒有理由,除了明確它。 :-) – drekka 2010-11-07 05:04:50