iOS 數據庫篇(一) CoreData 認識與入門---原理講解篇

衆所周知,在日常的開發項目中,免不了要使用數據庫這個東西來進行數據上的管理,雖然iOS 是移動端開發,但是把一些用戶數據等一些數據進行緩存,存儲,會大大節省開發效率以及提升用戶體驗,說起數據庫,先下主流的方式有兩種,一種是用基於 SQL 開發的數據庫(現下大多數用 FMDB第三方庫來開發)另一種則是 iOS 原生的 CoreData 來進行數據庫開發.今天我們要來學習的就是 CoreData

CoreData 是一個純粹面向對象的框架,可以管理實體以及實體之間的關聯關係的持久化,也就是我們常說的數據持久化.

優點:

  • 1.不用寫 SQL 語句,這對於有些同學來說應該是一個福音,而且 SQL 語句錯誤時會導致問題不便於找出來,所以這也是一個便捷錯作啦
  • 2.代碼清晰,如果有語法錯誤會即使提示,而不是等到運行時才知道錯誤.
  • 3.配備可視化的結構,讓對於字段的增刪清晰明朗

缺點:

  • 1.是一個重量級的數據庫管理,產生很多代碼量
  • 2.對於複雜的聯合表查詢不適用
  • 3.出錯不容易解決或找到問題,需要有很深的開發功底
  • -

那我們先來了解 CoreData 的基本結構吧

  • NSManagedObiectModel(託管對象模型):

    該對象負責管理整個應用的所有實體以及實體之間的關聯關係。當開發者使用Xcode的圖形界面設計了實體與實體的關聯關係之後,需要使用該對象來加載、管理應用的託管對象模型。

  • NSPeristentStoreCoordinator(持久化存儲協調器):

    負責管理底層的存儲文件,例如SQLite數據庫等。

  • NSManagedObjectContext(託管對象上下文):

    該對象是Core Data的核心對象,應用對實體所做的任何增、刪、查、改操作都必須通過該對象來完成。

  • NSEntityDescription(實體描述):

    該對象代表了關於某個實體的描述信息,從某種程度來說,該對象相當於實體的抽象。實體描述定義了該實體的名字、實體的實現類,並用一個集合定義了該實體包含的所有屬性。

  • NSFetchRequest(抓取請求):

    抓取請求NSFetchRequest:該對象封裝了查詢實體的請求,包括程序需要查詢哪些實體、查詢條件、排序規則等。抓取請求定義了本次查詢的實體的名字、抓取請求的查詢條件,通過NSPredicate來表示,並用一個NSArray集合定義了所有的排序規則。

    下面通過一張圖來理解 它們之間的關聯
    這裏寫圖片描述

這裏寫圖片描述

CoreData 可以看做是由兩部分組成

  • 一個是NSManagedObjectContext管理的模型部分,管理着所有CoreData的託管對象。裏面存儲的是一個個的 MO 對象

  • 一個是SQLite實現的本地持久化部分,負責和SQL數據庫進行數據交互,主要由NSPersistentStore類操作。

    瞭解原理後,我們大致可以知道使用的步驟以及使用的方法,將在下一篇博客裏面書寫 CoreData 創建與使用

發佈了47 篇原創文章 · 獲贊 13 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章