2012-04-03 50 views
4

我們有在Android,iOS和Windows移動版上運行的本機應用程序。用於其他設備(如BlackBerry)的移動網絡解決方案。這些應用程序目前對我們的CMS做了最初的大量拉動,然後將XML從我們的CMS解析爲其數據存儲。這些數據可以在設備上離線使用。隨着我們擴展,我們正在尋找比XML更優雅的東西。多個平臺的數據存儲。我應該在我們的環境中使用CoreData嗎?

以下是我們正在考慮的選項:

選項1.導出一個SQLite數據庫到Android,iOS和Windows 7的手機,他們都那麼作爲它的數據存儲使用。

優點:CMS出口相同的數據格式,對所有設備

缺點:iOS的未使用CoreData喜歡的一切,我一直在讀說,我應該使用。

選項2.導出sqlite數據庫到所有平臺,但有iOS插入數據到CoreData。我們正在開發CMS的想法,將JSON格式導出到iOS,並將iOS插入CoreData,因爲我們對應用程序的增量更新將使用JSON格式。

優點:iOS使用CoreData及其所有優點。

缺點:iOS版現在我們所有的其他平臺迷路,使得它需要一個折衷的解決辦法

好奇,如果任何人有需要持久性存儲以及您的團隊不同平臺的移動應用程序(將數據轉換成CoreData存儲。)解決它。

2013年3月22日爲小的澄清和語法上的變化。

回答

1

真正的問題是:你真的可以在這些平臺上重複使用任何代碼嗎?不多。可能太少了,不用擔心。事實上,如果你沒有一個通用的C/C++庫(廣義上,如的一組函數)來處理SQLite數據庫中的數據,那麼沒有太多的代碼要重用。

有些情況下,您會嚴重依賴特定的SQL查詢以獲得良好性能。這些查詢在Core Data中可能會非常低效。在這種情況下,我會去與SQLite和FMDB

如果查詢非常簡單,而且您主要需要顯示/編輯數據,那麼使用Core Data將會更容易。

4

偶然發現了這個解決方案,在做研究: https://github.com/AlexDenisov/iActiveRecord

它的行爲類似於CoreData,使得它利用的對象圖。它爲您構建幕後的SQL語句,以便您不必關心編寫查詢。

我對這個解決方案的喜歡是,iActiveRecord指向我們的CMS(利用django)導出的SQLite數據庫,我們只是定義Obj-C類以匹配表的模式(類似於定義數據模型CoreData)。在類模式被定義爲反映我們的表模式之後,我們可以開始使用對象而不用擔心sql查詢。

CoreData無法做到這一點,因爲它需要我們編寫一個「轉換器」來從CMS導出數據到CoreData的數據存儲區。

當然,CoreData的所有額外功能都缺失,但對於我們的用例,利用iActiveRecord可以衡量其他選項。

相關問題