2011-11-15 48 views
9

我的問題是類似於:Problem creating NSManagedObject derived class在沒有initWithEntity的情況下使用NSManagedObject類:?

我已經在覈心數據中設置NSManagedObject並有一個類。然而,我不想創建一個相同的NSObject類,而是使用NSManagedObject類,但我不想創建實體並保存它。我只想用它作爲數組,只有當我需要將對象保存在Core Data中時,才需要使用insertEntity:

Store * store = [[Store alloc] init];

它給我下面的錯誤:CoreData: error: Failed to call designated initializer on NSManagedObject class 'Store'

有沒有辦法要麼子類,或以某種方式使用NSManagedObject類/屬性來分配我只是用暫時表對象?

謝謝。

回答

24

只需使用initWithEntity:insertIntoManagedObjectContext:,並通過一個背景,然後調用insertObject:的NSManagedObjectContext,當您準備:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyModelClass" inManagedObjectContext:myContext]; 
id object = [[MyModelClass alloc] initWithEntity:entity insertIntoManagedObjectContext:nil]; 
+1

創建,當你沒有通過零實體描述。我沒有或不想創建上下文。 – runmad

+1

這種方法有多可靠?這似乎工作,這就是爲什麼我已經投票了,但這是一個文件化的方式嗎? –

+0

也可以傳遞實體描述,以便如果您希望最終插入它,您可以。 – amcc

3

如果您不保存MOC,那麼您可以在保存之前簡單地刪除該對象,它將永遠不會被保留。

雖然核心數據非常適合堅持使用,但並不是必需的。事實上,MOC經常被描述爲便箋。你可以生成對象然後把它們扔掉。

An instance of NSManagedObjectContext represents a single 「object space」 or scratch pad in an application.

另一種方案是對臨時對象單獨MOC,然後要麼扔掉臨時MOC或移動的MO到你的執着MOC。

因此,在這種情況下,您將在「持久性MOC」上登錄- (void)insertObject:(NSManagedObject *)object,然後在「Temporary MOC」上登錄- (void)deleteObject:(NSManagedObject *)object

相關問題