2009-12-21 103 views
1

我是一個專注於iphone應用程序開發的軟件工程師,我擁有開發人員許可證。 目前我正在一個項目中,我需要在iphone中維護本地數據庫。每次啓動應用程序時,應用程序都應該同步來自遠程服務器的數據。應用程序應該添加/更新/刪除與遠程服務器數據對應的本地表項。如何維護本地數據庫iphone

我打算使用SQLite DB。我想知道是否有任何框架可用於同步這兩個數據庫? iPhone還支持其他任何數據庫嗎?

回答

0

我最近完成了一個類似的應用程序(至少在數據庫功能方面),我發現核心數據是無價的。它允許您定義數據模型 - 類似於遠程數據庫中的數據庫模式 - 然後您可以以任何最適合您的格式提取數據並將其存儲在Core Data中。

框架將抽象出來的東西就像是底層的持久化機制,這樣你就可以使用SQLite(默認值)或幾個其他的數據存儲格式(XML是一種選擇,IIRC)。您還可以以面向對象的方式操作數據記錄,這對駕駛應用程序的其他部分(如UI)非常方便。看看Core Data Programming Guide瞭解更多信息。

至於同步框架本身,我不知道什麼預建的,做你在找什麼的。我的解決方案是讓服務器上的SQL守護進程生成XML(爲了這個目的,MySQL恰巧有一個方便的命令行選項--xml),然後在iPhone端使用NSXMLParser將XML解析回Core Data對象(當然其他人會推薦libxml - 我只是堅持最容易獲得的東西)。

+0

僅供參考,我(幾乎完全確定),其CoreData的iPhone實現只允許在SQLite數據庫存儲數據,不像有幾種不同的後備選項的桌面版本。 –

+0

據http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdPersistentStores.html#//apple_ref/doc/uid/TP40002875,在iPhone上你沒有得到XML (所以我的一個例子是錯誤的:),但你確實得到了原子和內存存儲,以及定義你自己的商店類型的能力。但是,良好的通話方式比完整的Mac平臺更有限。 – Tim

1

我也正在就這個問題和我將使用核心數據爲好。我計劃使用Reachability API來確定是否能夠同步,然後使用JSON從遠程服務器傳輸數據。核心數據非常易於使用,您不必直接構建SQL。它還會自動管理保存在內存中的對象,這將有助於像iPhone一樣在受限環境中使用內存。