自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iOS 8/OS X 10.10 對(duì) CoreData 的改進(jìn)

移動(dòng)開發(fā) iOS
自 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)

看了好多集 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)方面的,非常值得一用。

這些分別是:
Batch Updates
說起來,這可能是不用 CoreData 的人***個(gè)質(zhì)疑的理由:什么?我竟然不能寫一句簡(jiǎn)單的 SQL 把我所有的 Entry 的某個(gè)字段給更新或刪除掉,這樣的數(shù)據(jù)庫(kù)還算是數(shù)據(jù)庫(kù)嗎?
事實(shí)就是 CoreData 本來就不是個(gè)數(shù)據(jù)庫(kù),不過在發(fā)展了那么多年后,這個(gè) Batch Updates 終于讓它更加「數(shù)據(jù)庫(kù)友好」了。

通過新增的 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。

Asynchronous Fetching
這算是體驗(yàn)上的一個(gè)很好的改進(jìn)了,終于有內(nèi)置的設(shè)計(jì)優(yōu)良的「異步獲取」方法了,更棒的是,它還能和 NSProgress 這個(gè)一起協(xié)作,因此「異步」+「進(jìn)度更新」可以非常簡(jiǎn)單地得到支持。
這個(gè)主要由新增的 NSAsynchronousFetchResult 類來完成,這是一個(gè)非常典型的立即返回+結(jié)果回調(diào)的東西,你需要在 Private 或 Main 的 Context 來做這個(gè)操作,其他的使用就非常簡(jiǎn)單。
當(dāng)你有非常多的條目需要一次性載入時(shí),Asynchronous Fetching 就是必用的。
其他

Incremental store 這節(jié)沒怎么看懂,需要再看一遍。此外,在并發(fā)方面,CoreData 除了在以前 NSManagedContext 上對(duì) performBlock 的支持外,還對(duì) NSPersistentStoreCoordinator 也增加了這個(gè)的支持。關(guān)于這個(gè)我還沒有什么體會(huì),畢竟沒有用到多個(gè) StoreCoordinator。

此外,iOS 也和 OS X 一樣,針對(duì) Concurrecy 也支持這樣的 debug 了:com.apple.CoreData.ConcurrencyDebug 1
***,就是關(guān)于 Swift 對(duì) CoreData 的支持,基本上和 Objective-C 無異,主要是 NSManagedObject 需要用 @NSManaged 來修飾變量,還有 Model 那里需要把 class 的 namespace 也寫進(jìn)去。
根據(jù)官方演示的例子,同樣的數(shù)據(jù)庫(kù),用 Swift 寫的 CoreData 程序還比 Objective-C 的性能要高…我已經(jīng)迫不及待要用 Swift 來寫我的 iOS App 了。

本文鏈接:http://www.cocoachina.com/applenews/devnews/2014/0724/9235.html

責(zé)任編輯:chenqingxiang 來源: cocoachina
相關(guān)推薦

2014-05-30 16:56:00

WWDC2014OS X 10.10蘋果

2013-10-09 09:45:15

OS XOS X 10.10

2012-08-20 09:37:43

2012-02-17 14:41:12

Mac OS XOS XiOS

2011-06-20 14:04:14

Mac OS X

2014-05-09 11:23:29

iOS移動(dòng)互聯(lián)網(wǎng)

2015-08-05 13:56:30

2015-02-27 09:13:08

OS XiOSLinux

2010-07-15 14:37:20

Ubuntu 10.1

2012-02-17 09:21:22

Mac OS X

2014-05-21 15:42:12

OS X補(bǔ)丁

2011-07-19 09:42:40

iOS 5Mac OS X Li技術(shù)展望

2012-09-27 09:23:41

Win 8 OS X Mount

2012-07-13 09:52:31

Mac OS X

2009-06-24 08:38:28

微軟Windows 7操作系統(tǒng)

2015-07-15 11:38:20

OSXIOS更新

2011-10-20 20:56:42

UbuntuMac OS X

2010-03-31 13:37:38

Ubuntu 10.0

2015-07-27 09:25:45

core data

2012-12-26 09:41:13

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)