2013-10-30 70 views
0

通過iOS教程,似乎Simperium的工作方式與iCloud Core Data非常相似,它在後臺透明地同步,並將更改寫入底層持久存儲區,併合併到當前託管對象上下文中的更改。我相信這是待辦事項列表示例應用程序的工作方式,因爲NSFetchedResultsController會自動檢測其託管對象上下文中的更改。Simperium如何處理自定義驗證邏輯?

但是我的問題是,是否有任何API用於檢測可能發生的衝突?這實際上是一個兩部分問題。首先,Simperium無法處理並嚮應用程序報告以定製方式處理的任何衝突?其次,假設我有一個約束,它實際上是作爲核心數據驗證方法實現的,例如,確保子項數量的總和等於他們父項的數量(不要問我爲什麼,它是隻是它應該如何在我的應用程序中),當Simperium從多個設備同步更改時,可能會出現這樣的情況:兩個設備都會編輯子項目,以使子項目的總和不再等於父項目的數量。 Simperium會將無效數據寫入我的永久性存儲中嗎? (即繞過我的核心數據驗證)。或者,它是否會以某種方式向我報告驗證錯誤,並讓我解決應用程序內的衝突?

如果可以處理這些案例,我們很樂意使用Simperium。

回答

0

目前沒有用於檢測衝突的API,因爲Simperium旨在自動解決衝突,特別是對於NSStrings。

儘管我們意識到默認值不適用於所有用例,並且系統設計爲支持服務器端模式,以允許您覆蓋各種類型的默認衝突解決方案。例如,您可以通過始終添加值而不是替換它們來指定一個「合併」數字。這還沒有準備好。

與此同時,只要您僅在iOS和Mac客戶端之間進行同步,核心數據驗證應該可以正常工作。 Simperium最終在NSManagedObjectContext上的save就像其他任何東西一樣,因此它應該觸發驗證。我的建議是嘗試一下(Simperium不需要太多的努力來整合),並讓我們知道如果您遇到問題adding an issue on GitHub