В принципе, я пытаюсь получить доступ к некоторым свойствам a после удаления его из NSManagedObjectContext
и сохранения контекста. Проблема заключается в том, что после сохранения контекста Core Data помечает данные объекта как ошибки и, по-видимому, не может его восстановить.Ошибка основных данных после удаления управляемого объекта
Я создал образец проекта, чтобы воспроизвести проблему, вы можете скачать ее here. Чтобы проиллюстрировать это, следующий фрагмент кода:
City *city = [self.cities objectAtIndex:indexPath.row];
[self.managedObjectContext deleteObject:city];
if (![self.managedObjectContext save:&error]) {
[self.managedObjectContext rollback];
NSLog(@"Error: %@", error);
}else{
NSLog(@"%@", city);
// All properties of "city" are zeroed.
// Saved. Update data sources and animate changes...
}
производит:
<City: 0x7fe1cbd3cba0> (entity: City; id: 0xd000000000040004 <x-coredata://C1E3D3D8-188D-41DE-B701-08AF6D3E8860/City/p1> ; data: {
country = "0xd000000000080002 <x-coredata://C1E3D3D8-188D-41DE-B701-08AF6D3E8860/Country/p2>";
name = Rosario;
})
<City: 0x7fe1cbd3cba0> (entity: City; id: 0xd000000000040004 <x-coredata://C1E3D3D8-188D-41DE-B701-08AF6D3E8860/City/p1> ; data: <fault>)
Поэтому я хотел бы получить доступ к управляемому объекту, после его удаления, чтобы обновить NSMutableArray
, который действует в качестве источника данных для представление таблицы и обновление другого источника данных в предыдущем контроллере в стеке контроллера навигации (это не реализовано в примере проекта).
Завершая, мои вопросы не являются:
После удаления NSManagedObject
из его NSManagedObjectContext
и сохранения контекста, оно больше не гарантируются, что данные в управляемом объекте будут доступны? Даже если ссылка на этот управляемый объект сохранена?
Основываясь на том, что я исследовал, Core Data избавляется от данных сущности для сохранения памяти после сохранения контекста. Правильно ли это предположение? Существуют ли другие факторы, которые могут привести к сбою этих данных?
Спасибо.
Почему вы ожидаете получить доступ к удаленному объекту после сохранения контекста? Используйте «NSFetchedResultsController» для источников данных. – Avi
Вы не должны использовать ссылки на удаленные объекты. – Andy
@Avi, потому что я сохранил ссылки на управляемый объект. – Mateus