iOS 8/OS X 10.10 對(duì) CoreData 的改進(jìn)
看了好多集 WWDC 了,感覺再不做點(diǎn)筆記又要忘記光了,所以從和我關(guān)系***的 CoreData 開始吧。
自 CoreData 首先在 OS X 10.4 Tiger 上登陸以來,經(jīng)過那么多版本的發(fā)展現(xiàn)在各方面已經(jīng)相當(dāng)?shù)耐晟屏?,因而在這次 iOS 8/OS X 10.10 上,CoreData 的特性變化不多,只有幾項(xiàng),但是都是著眼于性能及體驗(yàn)方面的,非常值得一用。
通過新增的 NSBatchUpdateReuqest 和 NSBatchUpdateResult 來完成批量更新數(shù)據(jù)的操作,你終于能非??焖俚耐ㄟ^類 SQL 語(yǔ)言更新數(shù)據(jù)庫(kù)那樣的操作來對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行修改了,而不用像以前一樣,要針對(duì)每個(gè) Object 進(jìn)行更新,又慢又消耗內(nèi)存。它會(huì)返回成功或失敗,改變的行數(shù),被改變的 ID 數(shù)組,簡(jiǎn)直就和查詢數(shù)據(jù)庫(kù)一樣。
當(dāng)然,這個(gè) Batch Updates 會(huì)有一點(diǎn)副作用——即更新后 Context 不會(huì)有對(duì)應(yīng)的反應(yīng),因此你需要手動(dòng)去刷新 Context,以免造成界面和數(shù)據(jù)不一致。其他如限定在 NSManagedObject 上的 validation 也就此失效,所以——就像操作傳統(tǒng)數(shù)據(jù)庫(kù)一樣,也要小心使用 CoreData 的 Batch Updates。
Incremental store 這節(jié)沒怎么看懂,需要再看一遍。此外,在并發(fā)方面,CoreData 除了在以前 NSManagedContext 上對(duì) performBlock 的支持外,還對(duì) NSPersistentStoreCoordinator 也增加了這個(gè)的支持。關(guān)于這個(gè)我還沒有什么體會(huì),畢竟沒有用到多個(gè) StoreCoordinator。
本文鏈接:http://www.cocoachina.com/applenews/devnews/2014/0724/9235.html