core datasql
core data 基於model-view-controller(mvc)模式下,爲建立分解的cocoa應用程序提供了一個靈活和強大的數據模型框架。
core data可使你以圖形界面的方式快速的定義app的數據模型,同時在你的代碼中容易獲取到它。core data提供了基礎結構去處理經常使用的功能,例如保存,恢復,撤銷和重作,容許你在app中繼續建立新的任務。在使用core data的時候,你不用安裝額外的數據庫系統,由於core data使用內置的sqlite數據庫。
core data提供了一個通用的數據管理解決方案來處理那些全部須要數據模型的app(或大或小)。app使用core data來管理數據對象是不少的益處。
蘋果的圖形用戶界面編譯器-interface builder(IB),提供了對core data controller對象的預構建,從而來減小app的用戶界面和它的數據模型之間的粘滯代碼。在使用core data的時候你不須要考慮sql的語法問題,也不須要管理相關的邏輯樹去追蹤用戶的行爲,更不用創建新的永久機制。當你寫你app的用戶界面到它的 core data模型的時候,它已經爲你把全部的東西都作好了。
core data將你app的模型層放入到一組定義在內存中的數據對象。core data會追蹤這些對象的改變,同時能夠根據須要作相反的改變,例如用戶執行撤銷命令。當core data在對你app數據的改變進行保存的時候,core data會把這些數據歸檔,並永久性保存。它保存的數據在一些常規的文件,你能夠在Finder中能夠進行管理,用spotlight進行搜索,備份到 cd,和email給朋友或者家人。
在使用core data框架的時候,你能夠建立一個管理對象的模型,該模型提供了對模型對象的抽象定義,這也就是咱們所知道的entities,它能夠在咱們的程序中使用。
core data是一個實體-關係模型,該模型是使用Xcode的數據模型設計工具來定義的,對數據實體以及他們的關係提供了豐富的環境。
sqlite
mac os x中sqlite庫,它是一個輕量級功能強大的關係數據引擎,也很容易嵌入到應用程序。能夠在多個平臺使用,sqlite是一個輕量級的嵌入式sql數據庫
編程。與core data框架不一樣的是,sqlite是使用程序式的,sql的主要的API來直接操做數據表。
fmdb
FMDB框架其實只是一層很薄的封裝,主要的類也就兩個:FMDatabase和FMResultSet。在使用fmdb的時候還須要導入libsqlite3.0.dylib。
core data容許用戶使用表明實體和實體間關係的高層對象來操做數據。它也能夠管理串行化的數據,提供對象生存期管理與object_graph 管理,包括存儲。Core Data直接與Sqlite交互,避免開發者使用本來的SQL語句.
上面的三種,都是在什麼狀況下使用呢?
在編寫程序的時候儘可能使用core data,這樣纔是最優的選擇。
至於sqlite和fmdb的使用狀況,這個看我的喜愛了,我的以爲沒什麼標準。fmdb就是對sqlite的封裝,使用起來有方便的接口,沒那麼麻煩而已。