gpt4 book ai didi

iphone - fetchedResultsContainer 核心数据中出现严重应用程序错误

转载 作者:行者123 更新时间:2023-12-03 18:20:56 25 4
gpt4 key购买 nike

尝试添加记录时出现以下错误:

Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. The index 0 is invalid with userInfo (null)

就是这样。我将断点放入我已实现的所有 fetchedResultsContainer 委托(delegate)方法中,但没有任何中断。

我追踪到:

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

“sectionNameKeyPath”是问题所在。 “titleFirstLetter”是一个 transient 属性,我在 NSManagedObject 子类中为其创建了一个 getter。

这是 setter/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,尽管这似乎不是问题。如果我将字符串设置为任意值(如果它为零),它仍然会崩溃。

知道这里发生了什么吗?

更新:如果我在sectionNameKeyPath中使用标题而不是 transient 属性,它不会崩溃,但显然将每个项目放在自己的部分中。所以它在某种程度上与 transient 属性有关......

更新2:使用持久属性而不是 transient 属性进行一些初步的黑客攻击,并且没有其他更改,似乎工作得很好,所以这看起来是一个错误。我有一个打开的错误报告:#8553064

更新3:好吧,从头开始。使用持久属性没有任何区别。我现在有点穷了。

谢谢!

最佳答案

嗯,这可能部分(或完全)是用户错误。问题是,在添加新项目的 View 中,我将 [self.tableView reloadData] 放入 viewWillAppear 方法中。注释掉这一点并没有更新表格单元格,但可以防止崩溃。

然后,我继续将 reloadRowsAtIndexPaths:withRowAnimation: 发送到 TableView ,以手动重新加载需要它的几个单元格。

我很高兴这一切终于结束了!

关于iphone - fetchedResultsContainer 核心数据中出现严重应用程序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3934417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com