为啥 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 故障?的主要内容,如果未能解决你的问题,请参考以下文章
如何正确使用 LoadImage 和 DeleteObject?
核心数据:-deleteObject:崩溃,删除规则是原因吗?
deleteObject: 如何在 coreData 中工作?