2014-08-08 1 views
1

Я столкнулся с этой проблемой последовательно более 3 месяцев. Я много искал и читал связанные документы и посещал многие форумы, но не нашел рабочего решения. При удалении объектов я получаю типичную ошибку NSManagedObject. NSManagedObjectContext не может удалять объекты в других контекстах.Невозможно удалить объекты в другом контексте

Я попытался обойти и попытался удалить объект, используя свой NSManagedObject ID, но безрезультатно.

NSManagedObjectID *findingsSurveyDataItemApiId = [findingsSurveyDataItemApi objectID]; 
      [self.managedObjectContext deleteObject:[self.managedObjectContext objectWithID:findingsSurveyDataItemApiId]]; 

Может ли кто-нибудь сказать, почему решение выше, все еще не работает?

PS: У меня есть два контекста управляемых объектов в приложении.

ответ

2

Я думаю, это может быть вводящее в заблуждение сообщение об ошибке из Core Data. Если объект, который вы хотите удалить еще не был сохранен в постоянной памяти, objectWithID не возвращает правильный объект, в соответствии с docs:

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

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

+0

Звучит убедительно, даст ему выстрел с проверкой на временный идентификатор 'BOOL isTemporary = [[managedObject objectID] isTemporaryID];' – Umair