什么是清除核心数据文件中所有数据的最佳方法,并将我更新的地址簿重写为我的核心数据?有没有办法覆盖核心数据中的数据?我怎么能在良好的实践中做到这一点?
我希望能够同步我的地址簿和核心数据文件,其中一种方法是检查地址簿中的更改,并根据更改删除或添加核心数据中的记录(我不知道)关心编辑的记录),一种方法是用核心数据删除我的SQLite文件中的所有数据,并将我更新的地址簿再次保存到同一个文件中。
答案 0 :(得分:0)
请参阅this blog post from Brent Simmons和my comment on my answer to your previous question。
从Core Data存储中删除一堆对象非常昂贵。您必须获取然后实例化每个NSManagedObject,然后将其删除,然后将更改推送到您的Core Data堆栈。这个过程比简单的SQL DELETE需要花费更多的时间。
如果您必须保留Core Data存储中的其他数据,那么您就会陷入困境。你必须这样做。但是,如果你可以吹走你的数据存储并重新开始,那将会更快。使用当前的通讯簿数据创建新的Core Data存储。保存。关闭现有数据存储区。将新数据存储移动到旧数据存储的位置(或将文件路径更改为新存储的路径)。
iOS 8中的批量更新功能可能会加速此过程。