Создание и удаление управляемых объектов

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

Создание управляемого объекта

При создании нового управляемого объекта необходимо указать его объект. Как правило, однако, Вам фактически не нужен доступ к модели непосредственно. Вместо этого Вы можете NSEntityDescriptionметод класса insertNewObjectForEntityForName:inManagedObjectContext: и передайте контекст управляемого объекта, в котором Вы хотите создать новый управляемый объект. Метод возвращается, экземпляр любого класса определяется в модели управляемого объекта для представления объекта, инициализированного со значениями по умолчанию, данными для его объекта в модели.

Чтобы изучить, как получить контекст управляемого объекта, считайте Получение Контекста Управляемого объекта.

NSManagedObjectContext *context = <#Get the context#>;
<#Managed Object Class#> *newObject = [NSEntityDescription
    insertNewObjectForEntityForName:@"<#Entity name#>"
    inManagedObjectContext:context];

Обычно важно бросить новый экземпляр к классу управляемых объектов так, чтобы можно было использовать надлежащие методы доступа без компилятора, генерирующего предупреждение (или при использовании точечного синтаксиса, ошибки).

Сохранение управляемого объекта

Просто создание управляемого объекта не заставляет его быть сохраненным к персистентному хранилищу. Это просто связано с контекстом управляемого объекта. Для передачи изменений в хранилище Вы отправляете контекст a save: сообщение.

Чтобы изучить, как получить контекст управляемого объекта, считайте Получение Контекста Управляемого объекта.

NSManagedObjectContext *context = <#Get the context#>;
NSError *error;
if (![context save:&error]) {
    // Handle the error.
}

Удаление управляемого объекта

Просто быть освобожденным не заставляет управляемый объект быть удаленным из персистентного хранилища. Для удаления управляемого объекта, необходимо удалить его из контекста, тогда сохраняют контекст.

Чтобы изучить, как получить контекст управляемого объекта, считайте Получение Контекста Управляемого объекта — или можно просто спросить сам объект, какому контексту это принадлежит.

NSManagedObject *aManagedObject = <#Get the managed object#>;
NSManagedObjectContext *context = [aManagedObject managedObjectContext];
[context deleteObject:aManagedObject];
NSError *error;
if (![context save:&error]) {
    // Handle the error.
}