ios開發(fā)之CoreData使用

很多人都知道CoreData是ios開發(fā)數(shù)據(jù)持久化方式的一種,很多時(shí)候別人都會(huì)問到,包括項(xiàng)目中也會(huì)使用到。但是很多人卻不知道里面的實(shí)現(xiàn)原理?,F(xiàn)在我來將我所理解的CoreData和大家分享下,有不對(duì)的地方歡迎大家指正和交流。

一、CoreData介紹

? ? ? ?CoreData是iOS5之后新出來的的一個(gè)框架, 是對(duì)SQLite進(jìn)行一層封裝升級(jí)后的一種數(shù)據(jù)持久化方式。它提供了對(duì)象關(guān)系映射的功能,即能夠?qū)C對(duì)象轉(zhuǎn)化為數(shù)據(jù)存儲(chǔ)到SQLite數(shù)據(jù)庫文件中,同時(shí)也能將數(shù)據(jù)庫中的數(shù)據(jù)還原成OC對(duì)象。相較于SQLite,我們使用CoreData就不需要再編寫任何SQL語句,再也不去糾結(jié)SQL語句怎么寫了,這是一個(gè)優(yōu)點(diǎn)。

二、CoreData核心結(jié)構(gòu)圖

? ? ? ? 使用CoreData,首先要理解這幾個(gè)用到的對(duì)象的意義:

? ? ? ? PersistentObjectStore:存儲(chǔ)持久對(duì)象的數(shù)據(jù)庫(例如SQLite,注意CoreData也支持其他類型的數(shù)據(jù)存儲(chǔ),例如xml、二進(jìn)制數(shù)據(jù)等)。

? ? ? ? ?ManagedObjectModel:對(duì)象模型,對(duì)應(yīng)Xcode中創(chuàng)建的模型文件。

? ? ? ? PersistentStoreCoordinator:對(duì)象模型和實(shí)體類之間的轉(zhuǎn)換協(xié)調(diào)器,用于管理不同存儲(chǔ)對(duì)象的上下文。

? ? ? ?ManagedObjectContext:對(duì)象管理上下文,負(fù)責(zé)實(shí)體對(duì)象和數(shù)據(jù)庫之間的交互。

? ? ? 看看下面這張圖,你大概就能明白它的意思了:

最底層的就是PersistentObjectStore,也就是我們實(shí)際存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu);

圖中的模型就是ManagedObjectModel,就是數(shù)據(jù)轉(zhuǎn)化為對(duì)象的模板;

以SQLite數(shù)據(jù)庫為例:

讀取數(shù)據(jù)庫的數(shù)據(jù)時(shí),數(shù)據(jù)庫數(shù)據(jù)先進(jìn)入數(shù)據(jù)解析器,根據(jù)對(duì)應(yīng)的模板,生成對(duì)應(yīng)的關(guān)聯(lián)對(duì)象。

向數(shù)據(jù)庫插入數(shù)據(jù)時(shí),對(duì)象管理器先根據(jù)實(shí)體描述創(chuàng)建一個(gè)空對(duì)象,對(duì)該對(duì)象進(jìn)行初始化,然后經(jīng)過數(shù)據(jù)解析器,根據(jù)對(duì)應(yīng)的模板,轉(zhuǎn)化為數(shù)據(jù)庫的數(shù)據(jù),插入數(shù)據(jù)庫中。

更新數(shù)據(jù)庫數(shù)據(jù)時(shí),對(duì)象管理器需要先讀取數(shù)據(jù)庫的數(shù)據(jù),拿到相互關(guān)聯(lián)的對(duì)象,對(duì)該對(duì)象進(jìn)行修改,修改的數(shù)據(jù)通過數(shù)據(jù)解析器,轉(zhuǎn)化為數(shù)據(jù)庫的更新數(shù)據(jù),對(duì)數(shù)據(jù)庫更新。

當(dāng)然這些邏輯還是要在使用中進(jìn)行加深理解。

我本人寫了一個(gè)使用CoreData的demo,實(shí)現(xiàn)對(duì)數(shù)據(jù)的增刪改查,gitHub地址:https://github.com/SirJunqiuWu/DemoOfCoreData.git ? 歡迎大家關(guān)注。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容