2012-10-21 69 views
1

我的核心數據子類之一有的items。它通常(但並非總是如此,所以沒有NSOrderedSet)用於取代有序的NSArray,所以我將orderedItems添加到類中,從而對它們進行排序。核心數據,iVars和分類

然後我遇到了性能問題,所以決定嘗試緩存orderedItems。我的計劃是在課堂上使用一個iVar,_cachedOrderedItems,如果它不爲null,我會返回。

該障礙與我使用的類別。我閱讀了一些關於將所有自定義代碼放在一個類別中的好建議,以便我可以在必要時重新生成核心數據類,而不會丟失所有的自定義設置。其中一種定製方法是orderedItems方法。

看來我不能在類別本身中聲明一個iVar。如果我嘗試將其放入核心數據類中,則無法在類別中訪問它。

我是否需要將自定義代碼移回核心數據類?或者我錯過了什麼?

我也聽說過Mogenerator,並會考慮學習使用這個,如果它會幫助。

+1

也許我應該使用一個子類而不是我的自定義代碼的類別? –

回答

1

你擁有這個班級,所以你可以使用班級延續(討論here)而不是一個類別。這允許你添加實例變量。

0

你一定要使用mogenerator。例如參見http://importantshock.wordpress.com/2006/12/19/mogenerator-or-how-i-nearly-abandoned-core-data/

,您可根據總目標在Xcode中,添加一個運行腳本有以下幾點:

mogenerator -m path/to/your/datamodel.xcdatamodeld/version.xcdatamodel --template-var arc=true -M /CoreData/Generated -H /CoreData 

NSManagedObject你得到一個類的子類。更新數據模型時,再次運行該腳本,基類將被更新,以保留對託管對象子類所做的所有更改。刪除--template-var arc=true無弧。