core data
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的封裝,使用起來有方便的接口,沒那么麻煩而已。