2014-11-09 99 views
0

我對應用程序開發和核心數據相對來說比較陌生,因此對我來說很簡單。我一直在研究一個應用程序(目前用於iOS,未來也是android),它使用核心數據在本地存儲用戶數據。 數據具有跨實體的關係。用戶可以創建,更新,刪除數據。支持離線和關係支持的跨平臺同步解決方案

現在我需要集成某種同步解決方案。我的要求是:

  1. 數據應該離線訪問(現在我正在測試該隊列操作)
  2. 數據應同步到雲存儲,當網絡可用(iOS上我已經測試了可達性本)
  3. 雲存儲需要整合到我目前的iOS和未來的android版本。
  4. 需要維護關係(或者其他連接父母子女的方式,我稍後再談)。
  5. 應使用ios上的核心數據,而不是第三方替換。

我與迄今許多解決方案圍繞搞砸:

  1. 我安裝一個服務器上我自己rethinkdb數據庫和PHP使用和REST來得到的東西去。這非常混亂。
  2. 我測試了parse.com和網上http請求(而不是解析庫) - 這是更好的,但我似乎無法管理從核心數據的關係。我的同步算法是複雜的(它可以工作,但我不確定是否有漏洞,當它可能失敗)
  3. 我測試了dropbox數據存儲api。我只測試了他們提供的iOS示例應用程序,看起來相當不錯(仍然需要了解工作原理)。

我的問題是:

  1. 如果我使用Dropbox的數據存儲API,它是如何與Android合作?當然核心數據在那裏不可用,那麼如何工作(對不起,我還沒有Android開發經驗)?它是如何處理實體之間的關係?
  2. 如果我去Parse.com,你認爲我的這個想法會起作用嗎? 而不是使用關係,我可以使用標識符?我的關係都是一對多的,所以在家長(1)我可以有一個ID A.在所有的孩子,我可以指出他們的父母A也因爲我的孩子也可以有孫輩,每個孩子我可以有另一個孫輩可以指出的ID。那麼......這是否有意義作爲關係的替代?如果是的話,那麼xcode中的關係是什麼?也許有自動級聯選項。
  3. 有沒有更好的解決方案可用於同步跨平臺?

我知道我的問題似乎有點問意見,但我想看看其他人已經嘗試過。過去一週從一種解決方案切換到另一種解決方案,並且設計同步算法已經讓我的大腦油然而生

回答

1

(我在Dropbox工作,只會解決問題的這一部分。)

Dropbox Datastore API不使用核心數據,因此在Android上的工作方式完全相同。爲什麼核心數據是一項要求?

至於關係,您對Parse的描述正是我建議用於Datastore API的原因。我相信你是對的,在數據​​庫和代碼中建模關係的原因是爲了獲得自動級聯操作和關係不變式的執行。

+0

感謝您的迴應!核心數據是一個需求,因爲我已經花了一個月的工作在這個應用程序。所以我真的不想改變我的架構。另外核心數據和NSFetchRequestController似乎與我的表視圖非常完美地工作。所以我需要保持它的位置。 Dropbox如何處理數據呢?我看了一下示例「toado」應用程序,我注意到了一些nsfetchrequest和那裏的東西,所以我認爲它使用了核心數據?沒有? – 2014-11-09 08:47:52

+0

不,數據存儲API不使用核心數據。在底層,它將數據的本地緩存存儲在它自己的sqlite數據庫中,並使用異步操作隊列來向服務器傳達增量。 – smarx 2014-11-09 09:00:50

+0

哦,好的。我猜dropbox對我來說不是一種選擇,那麼:( – 2014-11-09 09:03:46