我從Core Data
數據模型生成此NSManagedObject
子類:初始化一個NSManagedObject的子類的子類
@interface Customer : NSManagedObject
@property (nonatomic, retain) NSNumber * id;
@property (nonatomic, retain) NSString * firstName;
@property (nonatomic, retain) NSString * familyName;
@end
我的應用程序的邏輯使我定義這個Customer
類的子類,以擴展其性能和提供了一些方法,讓他們從我的數據模型生成的類分開:
@interface ExtCustomer : Customer
@property (nonatomic, retain) NSNumber *modificationDate;
+ (ExtCustomer *)parseJsonData:(NSData *)jsonData;
@end
我並不需要堅持這個modificationDate
財產,我要的是使用ExtCustomer
對象在整個應用中代替Customer
對象,但僅在需要時才通過Core Data
保存Customer
屬性。
我試圖實例ExtCustomer
調用init
,但這似乎是不可能的,因爲它從NSManagedObject
繼承,所以我試圖做到這一點:
+ (ExtCustomer *)createExtCustomerInContext:(NSManagedObjectContext *)context
{
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Customer" inManagedObjectContext:context];
ExtCustomer *customer = [[ExtCustomer alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:context];
[customer setFamilyName:@""];
[customer setFirstName:@""];
return customer;
}
但我看到的是,即使我投的對象(return (ExtCustomer *)customer;
),我實際得到的是一個Customer
對象。 由於我沒有在我的數據模型中定義ExtCustomer
實體,我想我只能得到的NSEntityDescription
。 我怎麼解決這個問題?
在此先感謝
我發現的問題是,我實際上並沒有得到'ExtCustomer'對象,而是'Customer'。我想要分開的類,因爲相反,如果我需要重新生成我的模型類,我需要再次將我的自定義屬性和方法添加到已經生成的類代碼中... – AppsDev 2014-10-09 06:46:11
當您獲取您寫入的對象... entityForName:@「Customer」...這意味着您獲取Customer對象但不是ExtCustomer。我沒有看到任何黑客解決方案。我認爲你可以做的最好的事情是將客戶對象擴展到核心,那麼你將在覈心中擁有2個對象。但它不能解決再生問題。也許可以使它更容易。 – kabarga 2014-10-09 06:54:26
更新了答案 – kabarga 2014-10-09 07:12:50