Когда на iPhone запускается следующий код (ios 3.1), количество выбранных объектов после удаления на единицу меньше, чем до удаления. Но на iPad (ios 3.2) количество остается неизменным. Это несоответствие вызывало сбой на iPad, поскольку в другом месте кода вскоре после удаления вызывается fetchedObjects, и вызывающий код, доверяя счетчику, пытается получить доступ к свойствам только что удаленного объекта, что приводит к ошибке NSObjectInaccessibleException (см. Ниже ). Было исправлено использование этого закомментированного вызова для executeFetch, который при выполнении повторного вызова fetchObjects дает тот же результат, что и на iPhone без него. Мой вопрос: почему iPad дает результаты, отличные от iPhone? Это второе из этих различий, которые я обнаружил и опубликовал недавно.
-(NSError*)deleteObject:(NSManagedObject*)mo;
{
NSLog(@"\n\nNum objects in store before delete: %i\n\n",
[[self.fetchedResultsController fetchedObjects] count]);
[self.managedObjectContext deleteObject:mo];
// Save the context.
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
}
// [self.fetchedResultsController performFetch:&error]; // force a fetch
NSLog(@"\n\nNum objects in store after delete (and save): %i\n\n",
[[self.fetchedResultsController fetchedObjects] count]);
return error;
}
(Полное исключение NSObjectInaccessibleException: «Завершение приложения из-за необработанного исключения« NSObjectInaccessibleException », причина:« CoreData не может выполнить ошибку для »0x1dcf90