【发布时间】:2011-04-25 11:12:15
【问题描述】:
尝试添加记录时出现以下错误:
严重的应用程序错误。例外 在核心数据更改期间被捕获 加工。这通常是一个错误 在观察者内 NSManagedObjectContextObjectsDidChangeNotification。 索引 0 对 userInfo 无效 (空)
就是这样。我在我实现的所有 fetchedResultsContainer 委托方法中都设置了断点,但没有任何中断。
我追踪到:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"titleFirstLetter" cacheName:@"Root"];
“sectionNameKeyPath”是问题所在。 “titleFirstLetter”是我在我的 NSManagedObject 子类中创建的 getter 的瞬态属性。
这是吸气剂:
-(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,尽管这似乎不是问题。如果我使字符串为 nil 时任意设置,它仍然会崩溃。
知道这里有什么吗?
更新: 如果我在 sectionNameKeyPath 中使用标题而不是瞬态属性,它不会崩溃,但显然会将每个项目放在自己的部分中。所以它在某种程度上与瞬态属性有关......
更新2: 一些使用持久属性而不是瞬态的初步黑客攻击,并且没有其他更改,似乎工作得很好,所以这看起来是一个错误。我打开了一个错误报告:#8553064
更新3: 好吧,从头开始。使用持久属性没有任何区别。我现在有点不知所措了。
谢谢!
【问题讨论】:
标签: iphone core-data nsfetchedresultscontroller