2011-03-12 39 views
4

本書使用Core Data開發了一個簡單的iPhone應用程序。數據是不可變的,並存儲在由Core Data管理的預加載的sqlite數據庫中。從Android訪問iOS Core數據

現在我需要爲Android開發(幾乎)相同的應用程序。我即將編寫一組非常基本的模仿Core Data的類,並從完全相同的sqlite數據庫中讀取。

在開始之前,我想知道是否有人知道如何做到這一點的Android庫。

從理論上講,你幾乎可以像iOS一樣提供相同的API,甚至可以解析對象模型。

+0

爲什麼要模仿核心數據?最好使用平臺已經提供的內容?在Android的情況下,通過使用共享首選項和SQLite數據庫 – 2011-03-12 11:04:30

+0

我將實際上使用sqlite。數據位於sqlite數據庫中。格式是核心數據的格式,所以我將使用它的字段名稱等。但在着手之前,我想確保它以前沒有做過。共享首選項似乎不適用於(大)預加載的數據庫。 – mvds 2011-03-12 11:11:51

+0

@Ravi Vyas其實SharedPreferences只會保存偏好和一些有限的信息。你不能指望sharedPreferences足夠像sql一樣的數據。 – 2011-03-13 01:46:02

回答

7

核心數據有它自己的數據結構,你可以看看它,你會看到這樣的事情:

enter image description here

從模型

表是由Z前綴,這樣你就可以完美地查詢這個SQLite數據庫在Android中使用SQL查詢。

注意:你能找到的文件夾中有模擬器運行過程中出現的應用程序後,這SQLite的文件:/Users/<you_name>/Library/Application Support/iPhone Simulator/<ios_version>/Applications/<app_id>/Documents/<app_name>.sqlite

+0

但也有例外,比如如果你在數據模型中使用父實體。那麼它就不再像使用Z前綴那樣簡單了,它與表格結構完全不同,你可能期望。 – bobnoble 2013-11-04 01:59:52

5

在更復雜的項目,我們從iOS的遷移代碼到Android時使用greenDAO作爲替代核心數據。它沒有帶有可視化建模,但基本操作非常相似。作爲一個ORM工具,greenDAO將Java對象映射到SQLite並提供諸如關係之類的東西。

+0

感謝您的信息。我最終爲android編寫了一個小型核心,並編寫了一個小型obj C例程來導出java類定義。後來我添加了完整的讀/寫支持。 greenDAO是否與核心數據足夠接近以使這種方法可行? – mvds 2012-01-15 12:43:17

+1

這取決於,當然...;)greenDAO是一個纖細的工具,無法與核心數據提供的功能競爭。例如,它缺少更改跟蹤,屬性驗證,模式遷移等高級內容。例如,在該項目中,驗證邏輯是通過額外的Java代碼完成的。除此之外,greenDAO仍然爲SQLite提供了更高的抽象形式,這仍然節省了大量的工作。你只需堅持對象並查詢它們。它不會完全封閉與Core Data的差距,但它比自己完成所有SQL佈線要好。 – 2012-01-15 18:12:01