为啥 deleteObject: 导致 CoreData 故障?

Posted

技术标签:

【中文标题】为啥 deleteObject: 导致 CoreData 故障?【英文标题】:Why does deleteObject: cause CoreData faults?为什么 deleteObject: 导致 CoreData 故障? 【发布时间】:2016-03-03 08:28:14 【问题描述】:

我有一个清理例程,它清除了一堆托管对象,形成一些似乎触发很多 CoreData 错误的原因。

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"LogEvent"];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:YES];
[request setSortDescriptors:@[sortDescriptor]];
[request setFetchLimit:numberToPurge];

NSArray *events = [context executeFetchRequest:request error:nil];

for (LogEvent *event in events) 
    [context deleteObject:event];


[context save:nil];

这就是我在仪器中看到的。

【问题讨论】:

我不知道为什么,但您可以使用 propertiesToFetch 空数组和 returnAsFaults NO 进行优化。 【参考方案1】:

通常会触发此错误以更新链接到已删除对象的对象的反向关系。

【讨论】:

这个对象没有任何关系,所以这不是原因。 尝试将includesPropertyValues设置为NO

以上是关于为啥 deleteObject: 导致 CoreData 故障?的主要内容,如果未能解决你的问题,请参考以下文章

qt5cored.dll丢失怎么解决

如何正确使用 LoadImage 和 DeleteObject?

核心数据:-deleteObject:崩溃,删除规则是原因吗?

deleteObject: 如何在 coreData 中工作?

崩溃:commitEditingStyle -deleteObject 为零

核心数据:deleteObject 使应用程序崩溃,NSPredicate 是啥原因?