0

我在正確的軌道上設計方面需要與我的服務器進行同步的設備上有持久數據?MVC和KVO的設計幫助

我有回到我的本地對象的方法的模型,我們稱之爲[model objects]';

在這個方法中它會立即返回本地對象,但我也想檢查服務器是否需要更新任何這些對象,所以在後臺線程我運行一個方法,使用async NSUrlConnection將返回每個對象的JSON需要更新,我將其中保存到核心數據。在表格視圖控制器中,我將設置KVO以觀察updatedObjects的值何時更改,然後重新加載顯示在objectTableView中的對象。

問題:這是處理這個問題的正確方法嗎?我錯過了什麼嗎?我能以某種方式改進嗎?

我還想到禁用正在更新對象的UITableViewCells和下載過程中呈現出UIActivityIndicator和保存期的,但我不知道這是否會導致UX的任何競爭條件。

希望對此有充分的解釋,以便您理解,如果您有任何問題,我會盡快回復。

回答

0

CoreData支持這類問題。有很多種方法。

基本要點是您在後臺線程中爲異步Web調用創建新的上下文,然後將您的本地數據與管理更新的新收到的數據進行比較。然後你執行從你的線程上下文到你的主要上下文的合併。此時,您可以收到CoreData中已更新數據的通知並更新您的視圖。

您甚至可以使用NSFetchedResultsController來簡化這一點。

+0

嗯,這似乎是我打算做什麼,糾正我,如果我做不同的事情。目前我打算將後臺線程中的CoreData中的對象保存(在新的MOC中),然後如果任何值發生更改,則與默認MOC合併。在完成塊中,我將設置'updatedObjects'的數據,VC上的觀察者將獲得該通知並更新ui。 – mkral