Serious Application Error in Core Data with fetchedResultsContainer

I get the following error when trying to add a record:

Serious application error. Exception был пойман во время смены Core Data обработка. Обычно это ошибка в пределах наблюдателя NSManagedObjectContextObjectsDidChangeNotification. Индекс 0 недействителен с userInfo (null)

Вот и все. Я установил точки останова во все методы делегата fetchedResultsContainer, которые я реализовал, но ничего не ломается.

Я отследил это до:

  NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"titleFirstLetter" cacheName:@"Root"];

"sectionNameKeyPath" - проблема. titleFirstLetter - это временное свойство, для которого я создал метод получения в моем подклассе NSManagedObject.

Вот метод получения:

-(NSString *)titleFirstLetter
{
  [self willAccessValueForKey:@"titleFirstLetter"];
  NSString *aString = [[self valueForKey:@"title"] uppercaseString];

  NSString *stringToReturn = [aString substringWithRange:[aString rangeOfComposedCharacterSequenceAtIndex:0]];

  [self didAccessValueForKey:@"titleFirstLetter"];
  return stringToReturn;
}

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

Есть идеи, что здесь происходит?

ОБНОВЛЕНИЕ: If I use the title in the sectionNameKeyPath instead of the transient property, it doesn't crash, but obviously puts every item in its own section. So it's somehow related to the transient property...

UPDATE2: Some preliminary hacking with using a persistent property instead of transient, and no other changes, seems to work just fine, so this looks to be a bug. I have a bug report open: #8553064

UPDATE3: Well, scratch that. Using a persistent attribute didn't make any difference. I am somewhat at whits end now.

Thanks!

18
задан Christoph 16 October 2010 в 04:12
поделиться