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

在Core Data應(yīng)用中使用原生SQL功能

移動(dòng)開發(fā) iOS
本文介紹的是在Core Data應(yīng)用中使用原生SQL功能,不多說(shuō),我們先來(lái)看詳細(xì)內(nèi)容。

Core Data應(yīng)用中使用原生SQL功能是本文要介紹的內(nèi)容,蘋果在iPhone 3.0以后的sdk中提供了Core Data功能,對(duì)于普通的數(shù)據(jù)庫(kù)應(yīng)用開發(fā)來(lái)說(shuō),大大提高了方便性。

新建Window Base Application的時(shí)候,選上下面的使用Core Data,模板就自動(dòng)創(chuàng)建好了,在delegate文件里提供了使用Core Data存取數(shù)據(jù)的所有方法,在其它View Controller里面只要調(diào)用delegate里面的方法就可以了。

而修改Data Model并基于該Model創(chuàng)建Entity定義也提供了可視化的操作,一旦定義了實(shí)例,只要在程序中new一個(gè)實(shí)例,給變量賦值,然后調(diào)用 delegate中的save方法就可以添加一條新的記錄了。這種方法對(duì)于長(zhǎng)文本和時(shí)間等sql中比較難處理的字段尤其好用。而且在已保存的記錄中取列表等操作也非常方便。(具體可以參考apple提供的Core Data入門教程)。

但是后來(lái)當(dāng)我需要做匯總功能的時(shí)候,就完全傻掉了,雖然Core Data也提供了簡(jiǎn)單的sum, avg等運(yùn)算,但是對(duì)于ralationship下的sum卻完全找不到文檔,甚至論壇上也搜不到解決方案。難道要我取出list再一個(gè)個(gè)手動(dòng)匯總?這樣數(shù)據(jù)量多的時(shí)候效率低的不是一點(diǎn)。

當(dāng)然,這時(shí)候如果能直接使用sql語(yǔ)句來(lái)匯總,那就最簡(jiǎn)單不過(guò)了??墒?,Core Data封裝的很完整,都不知道它把數(shù)據(jù)存到哪里去了,怎么辦?難道要用sqlite重寫整個(gè)程序,那已有添加和明細(xì)等功能就要做相當(dāng)大的無(wú)謂的改動(dòng)了。

今天終于找到了解決方案:Core Data本身就是基于sqlite的封裝,所以它的底層仍然是使用sqlite進(jìn)行存儲(chǔ)數(shù)據(jù)的,而它使用的數(shù)據(jù)庫(kù),就在delegate文件中。通常是程序的Documents目錄下的以程序名為名字的sqlite文件。如果程序已經(jīng)在模擬器中運(yùn)行過(guò),只要進(jìn)入用戶目錄下的 Library/Application Support/iPhone Simulator/User/Applications/,這里是你所有模擬器中運(yùn)行過(guò)的程序,找到你需要的那個(gè),進(jìn)去以后進(jìn)入Documents目錄,里面就是自動(dòng)生成的sqlite數(shù)據(jù)庫(kù)文件。把它復(fù)制出來(lái),用sqlite3命令直接查看數(shù)據(jù)庫(kù)結(jié)構(gòu)就可以了。

默認(rèn)情況下生成的數(shù)據(jù)表的名字就是你的Entity的名字,加上字母Z開頭,字段名也就是你定義的實(shí)例名字,同樣加上字母Z開頭,而主鍵就是個(gè)自增長(zhǎng)的int型。有了這個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu),在程序中添加libsqlite 3.0.dylib的framework,然后就可以在程序中使用原生 sqlite 3功能了。

有了方便的core data解決簡(jiǎn)單的數(shù)據(jù)操作,再配合完全自定義的sqlite功能,現(xiàn)在可以隨心所欲的開發(fā)強(qiáng)大的數(shù)據(jù)庫(kù)應(yīng)用了

小結(jié):在Core Data 應(yīng)用中使用原生 SQL 功能的內(nèi)容介紹完了,希望本文對(duì)你有所幫助。

轉(zhuǎn)自 http://dev.yesky.com/235/11107735.shtml

責(zé)任編輯:zhaolei 來(lái)源: Cocoa China
相關(guān)推薦

2011-08-19 17:44:01

2023-12-22 09:11:45

AndroidNFC移動(dòng)開發(fā)

2025-04-16 10:12:13

2021-02-25 11:19:37

谷歌Android開發(fā)者

2021-11-02 13:54:41

ElasticSear.NET程序

2009-09-22 12:17:59

ibmdwLotus

2011-05-27 08:48:13

Android HTML

2021-09-07 10:24:36

Vue應(yīng)用程序Web Workers

2011-12-25 15:37:51

ibmdw

2024-10-16 09:43:45

GreatSQLHint數(shù)據(jù)庫(kù)

2009-07-04 00:50:38

2009-06-19 13:45:53

Java應(yīng)用程序Jfreechart

2013-10-09 11:15:49

Ubuntu應(yīng)用程序

2021-08-10 07:27:42

ASP.NETFluentd日志

2009-11-23 19:52:55

ibmdwFlex

2012-06-05 09:54:50

Windows Pho

2022-08-30 20:00:37

零信任Linkerd

2009-06-25 16:49:24

Hibernate

2023-11-17 12:04:39

GORM并發(fā)

2013-12-13 17:21:14

Lua腳本語(yǔ)言
點(diǎn)贊
收藏

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