Использовать класс NSManagedObject без initWithEntity :? - PullRequest
10 голосов
/ 15 ноября 2011

Моя проблема похожа на: Проблема с созданием производного класса NSManagedObject

Я настроил NSManagedObject в Core Data и у меня есть класс для него.Однако вместо создания идентичного класса NSObject я бы хотел использовать класс NSManagedObject, но я не хочу создавать сущность и сохранять ее.Я просто хочу использовать его для массива, только когда мне нужно сохранить объект в Базовых данных, я хочу использовать insertEntity:

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

Это дает мне следующую ошибку: CoreData: error: Failed to call designated initializer on NSManagedObject class 'Store'

Есть ли способ либо создать подкласс, либо каким-либо образом использовать класс / свойства NSManagedObject для выделения объектов, которые я только временно использую для таблицы?1014 * Спасибо.

Ответы [ 2 ]

25 голосов
/ 15 ноября 2011

Просто используйте initWithEntity: insertIntoManagedObjectContext: и передайте nil контекст, затем вызовите insertObject: в вашем NSMAnagedObjectContext , когда вы будете готовы:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyModelClass" inManagedObjectContext:myContext];
id object = [[MyModelClass alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];
3 голосов
/ 15 ноября 2011

Если вы не сохраняете MOC, вы можете просто удалить объект перед сохранением, и он никогда не будет сохранен.

Хотя Core Data отлично подходит для сохранения, это не обязательно. На самом деле MOC часто называют блокнотом. Вы можете создавать объекты, а затем выбрасывать их.

Экземпляр NSManagedObjectContext представляет отдельное «пространство объектов» или блокнот в приложении.

Другое решение - создать отдельный MOC для временных объектов, а затем либо выбросить временный MOC, либо переместить MO в свой постоянный MOC.

Таким образом, в этом случае вы должны были бы - (void)insertObject:(NSManagedObject *)object на «Постоянном MOC» и затем - (void)deleteObject:(NSManagedObject *)object на «Временном MOC».

...