Базовые данные / ошибка NSFetchedResultsController

Я испытываю некоторые затруднения из-за базовых данных / NSFetchedResultsController. Я не совсем уверен, где ошибка состоит в том, поскольку сообщение довольно неопределенно.

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

Катастрофический отказ происходит на сохранении: метод. заголовки в NSArray и в этом примере это содержит 5 строк.

Серьезная ошибка приложения. Исключение было поймано во время Базовой обработки изменения Данных: * - [NSCFArray objectAtIndex:]: индекс (4) вне границ (1) с userInfo (пустой указатель) * Завершающееся приложение из-за неперехваченного исключения 'NSRangeException', причина: '*** - [NSCFArray objectAtIndex:]: индекс (4) вне границ (1)'

NSEnumerator *titleEnumerator = [titles objectEnumerator];
NSString *title;
NSMutableArray *tasks = [NSMutableArray array];
Todo *todo;

while(title = [titleEnumerator nextObject])
{
    todo = (Todo *)[NSEntityDescription insertNewObjectForEntityForName:@"Todo" inManagedObjectContext:managedObjectContext];
    todo.title = title;
    todo.state = [NSNumber numberWithInteger:TodoStateIncomplete];
    todo.priority = [NSNumber numberWithInteger:TodoPriorityNormal];
    todo.timeStamp = [NSDate date];
    todo.dueDate = [NSDate distantFuture];
}

NSError *error;

if(![managedObjectContext save:&error])
{
    NSLog(@"Unresolved error %@ %@", error, [error userInfo]);
    abort();
}
5
задан Daniel Wood 8 January 2010 в 02:24
поделиться

3 ответа

Вот совет Маркуса Зарры (автора книги Core Data book):

Ошибка Core Data при удалении строки в tableView

"Попробуйте взломать объектную_исключение_бросить и посмотрите, какой метод выбрасывает исключение. Это должно помочь отследить его"

.
5
ответ дан 14 December 2019 в 01:09
поделиться

Я знаю, что это вряд ли ответ, но так как авария происходит на save: и я помню, что у меня была странная ошибка с этим однажды... Ошибка, которая у меня была, исправлена таким образом, думаю, стоит попробовать.

Итак, при этом попробуйте изменить

NSError *error;

на

NSError *error = nil;
0
ответ дан 14 December 2019 в 01:09
поделиться

Подобные ошибки при сохранении основных данных при использовании iPhone SDK обычно указывают на ошибку в методах делегирования NSFetchedResultsController. В частности, один из примеров кода от Apple является некорректным и часто приводит к такой ошибке. Я бы посоветовал взглянуть на методы делегатов и сравнить их с последними примерами кода, так как вы можете обнаружить, что Apple обновила код примера в документации, и если вы повторно скопируете их код, эта ошибка может исчезнуть.

Надеюсь, это поможет.

4
ответ дан 14 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: