2013-04-17 114 views
0

我得叫汽車核心數據託管對象模型,看起來像這樣整合企業核心數據:與自定義類

.H

@property (nonatomic, strong) NSString *name; 

.M

@dynamic name; 

而且我有一個自定義類,名爲CarCache,用於緩存下載的汽車細節,如下所示:

.H

@property(nonatomic,copy) NSString *name; 

這是使用此實現持久:

.M

- (id)initWithCoder:(NSCoder *)coder 
{ 
    if (self = [super init]){ 
     _name = [coder decodeObjectForKey:@"name"]; 

我想這兩種模式整合,但想檢查我不會遇到問題。

我應該讓CarCache成爲Car的一個子類嗎?如果是這樣,我是否需要重寫當前的持久性機制(即使用NSCoder來使用核心數據)?或者我應該只是初始化/堅持正常的實例變量?例如。

self.name = [coder decodeObjectForKey:@"name"]; 

這感覺不對「因爲它是在init方法的@property方法。

或許:

super.name = [coder decodeObjectForKey:@"name"]; 

==== UPDATE

爲了澄清,我想實現我的CarCarCache類的東西。

Car用於在Core Data中本地存儲Car對象的詳細信息。

CarCache用於存儲來自定期更改的Web服務(例如位置)的Car對象的詳細信息。

目前,他們每個人都使用一個單獨的模型,我想盡可能避免。所以,我想整合這兩個模型。

E.g.我可以讓CarCache成爲Car的一個子類。我沒有任何經驗繼承核心數據模型,所以我正在尋找建議。

回答

0
_name = [coder decodeObjectForKey:@"name"]; 

是正確的。

+0

問題是關於集成核心數據和自定義類。我現有的代碼(即沒有任何整合)看起來就像你的答案。問題在於你最終得到2個實例變量。例如。 CarCache中的_name和Car中的_name。因此,這個問題。 – Snowcrash

+0

好吧,它們是兩個不同的實體,所以它們都可以具有相同的屬性名稱。當然,這個屬性不會被共享。也許你應該描述你想用CarCache實體完成的事情。 – Mundi