iOS 8/OS X 10.10 对 CoreData 的改进

看了好多集 WWDC 了,感觉再不做点笔记又要忘记光了,所以从和我关系最大的 CoreData 开始吧。

自 CoreData 首先在 OS X 10.4 Tiger 上登陆以来,经过那么多版本的发展现在各方面已经相当的完善了,因而在这次 iOS 8/OS X 10.10 上,CoreData 的特性变化不多,只有几项,但是都是着眼于性能及体验方面的,非常值得一用。

通过新增的 NSBatchUpdateReuqest 和 NSBatchUpdateResult 来完成批量更新数据的操作,你终于能非常快速的通过类 SQL 语言更新数据库那样的操作来对整个数据库进行修改了,而不用像以前一样,要针对每个 Object 进行更新,又慢又消耗内存。它会返回成功或失败,改变的行数,被改变的 ID 数组,简直就和查询数据库一样。

当然,这个 Batch Updates 会有一点副作用——即更新后 Context 不会有对应的反应,因此你需要手动去刷新 Context,以免造成界面和数据不一致。其他如限定在 NSManagedObject 上的 validation 也就此失效,所以——就像操作传统数据库一样,也要小心使用 CoreData 的 Batch Updates。

相关推荐