Создание экземпляра для класса NSManagedObject с помощью Restkit
как я могу создать экземпляр класса NSmanagedObject, который я создаю с использованием базовой модели данных. У меня есть другой класс, который является подклассом NSObject. Я хочу создать объект для класса NSManageObject. Как мне это сделать. Как обычно, мы создаем экземпляр класса NSobject, например
ClassB.m//ClassB - это класс NSObject
ClassA *obj = [[ClassA alloc]init]; //ClassA is NSmanagedObject Class
или есть ли способ сделать это???
Я не использую этот код (Apple Docs) для создания экземпляра
NSManagedObject *newEmployee = [[NSManagedObject alloc]
initWithEntity:employeeEntity
insertIntoManagedObjectContext:context];
Мне хотелось бы знать, есть ли способ создать объект, похожий на приведенный выше код, используя restkit
Примечание: я использую Restkit для создания экземпляра объекта и отображения.
Спасибо
Ответы
Ответ 1
С помощью Restkit вы можете использовать объект статического метода в классе, который хотите создать. В вашем примере
[ClassA object]
возвращает вам экземпляр объекта.
Просто не забудьте импортировать правильные заголовки:
#import <RestKit/CoreData.h>
вместо
#import <CoreData/CoreData.h>
Ответ 2
Нет, вы не хотите создавать экземпляр NSManagedObject через alloc/init. Вы должны использовать NSEntityDescription
insertNewObjectForEntityForName:inManagedObjectContext:
. Что-то вроде:
ClassA *obj = [NSEntityDescription
insertNewObjectForEntityForName:@"ClassA"
inManagedObjectContext:context]; // ClassA is NSManagedObject Class
Чтобы иметь NSManagedObjectContext
, вам также нужны NSPersistentStoreCoordinator
и NSManagedObjectModel
и т.д. Да, это сложно. Эта книга действительно помогла мне разобраться с Core Data; Я рекомендую это всем сердцем.
Смотрите раздел Руководство по программированию основных данных по созданию и удалению управляемых объектов. Фактически, пока вы там, я бы рекомендовал прочитать полное руководство Core Data Programming Guide. Core Data - потрясающий и мощный, но он сложный; вы действительно хотите знать, что вы делаете.
Обновить. Тот факт, что вы используете RestKit, может изменить сказанное выше. Может быть, у RestKit есть собственный API для работы с Core Data, я не уверен. Возможно, проверьте документы.