Как безопасно удалить несохраненный управляемый объект? - PullRequest
0 голосов
/ 14 сентября 2011

Мое приложение предлагает некоторую функциональность редактора для "текстовых статей".Мой редактор имеет два режима.Когда редактор загружается, я создаю управляемый объект, если он не был передан через инициализатор.Когда пользователь отменяет новое редактирование, я удаляю объект из контекста.Однако иногда я получаю сообщение об ошибке, что объект не вставляется в контекст, а иногда нет.Итак, является ли следующий код хорошим подходом для проверки того, был ли экземпляр управляемого объекта вставлен в контекст?

if ([[self.workingManagedObjectInstance managedObjectContext] isEqual:self.managedObjectContext]){

}

Моя теория состоит в том, что если [self.workingManagedObjectInstance managedObjectContext] равно nil, то оно не быловставлен и не будет "isEqual".Это правильный способ проверить, что мы не удаляем объект, который еще не был вставлен?

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Если возможно, всегда следует использовать один и тот же контекст управляемого объекта, а не его различные экземпляры. Если у вас более одного контроллера представления, вы должны передать тот же контекст, что и ссылка. Сравнение контекста ничего не говорит вам о существовании экземпляра сущности.

После инициализации объекта обычным способом

myEntity = [NSEntityDescription insertNewObjectForEntityForName:@"Entity" 
   inManagedObjectContext:self.managedObjectContext];

Вы можете проверить, существует ли он, и удалить его простым

if (myEntity) { 
   [self.managedObjectContext deleteObject:myEntity];
}
0 голосов
/ 18 сентября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...