在CoreData数据库中,如果我们要一次性删除大量托管对象,用CoreData自身提供的批删除功能无疑是一种极具效率的方式。
但大家可曾知道,表面上看起来简单易用的批删除功能,实际却暗藏尖刺与陷阱,稍不留神就会碰的头破血流。
在本篇博文中,您将了解到以下内容:
- CoreData中批删除操作为什么这么快?
- 批删除后保存出现 Could not merge changes 错误的原因
- 批删除如何更新托管对象上下文?
- 批删除含有关系(Relationship)托管对象的陷阱及解决
想彻底搞懂上面这些内容么?
还等什么呢?Let‘s Go!
问题分析 1. 批删除的本质为什么CoreData在删除大量托管对象时,批删除比普通的删除快很多呢?
原因在于批删除直接从持久存储中删除数据,跳过了托管对象上下文(NSManagedObjectContext)。
注意,如果你的数据仅仅存在内存中,批删除对此无能为力。