Ios MVC和KVO的设计协助
我有数据保存在需要与服务器同步的设备上,就设计而言,我走对了吗 我有一个带有返回本地对象方法的模型,我们称之为Ios MVC和KVO的设计协助,ios,performance,model-view-controller,key-value-observing,Ios,Performance,Model View Controller,Key Value Observing,我有数据保存在需要与服务器同步的设备上,就设计而言,我走对了吗 我有一个带有返回本地对象方法的模型,我们称之为[model objects] 在这个方法中,它会立即返回本地对象,但我还想检查服务器是否需要更新这些对象中的任何一个,因此在后台线程中,我运行了一个方法,该方法使用async NSUrlConnection,该方法将返回每个需要更新的对象的JSON,并将其保存到核心数据中。在表视图控制器中,我将设置KVO以观察更新对象的值何时更改,然后重新加载对象表视图中显示的对象 问题:这是正确的处
[model objects]代码>
在这个方法中,它会立即返回本地对象,但我还想检查服务器是否需要更新这些对象中的任何一个,因此在后台线程中,我运行了一个方法,该方法使用async NSUrlConnection
,该方法将返回每个需要更新的对象的JSON,并将其保存到核心数据中。在表视图控制器中,我将设置KVO以观察更新对象
的值何时更改,然后重新加载对象表视图
中显示的对象
问题:这是正确的处理方法吗?我错过什么了吗?我能改进一下吗?
我还考虑禁用正在更新的对象的UITableViewCell,并在下载和保存阶段显示UIActivityIndicator
,但我不确定这是否会在UX中造成任何竞争条件
如果您有任何问题,我将尝试立即回答。CoreData内部支持此类问题。有各种各样的方法
基本要点是在后台线程中为异步web调用创建一个新上下文,然后将本地数据与管理更新的新接收数据进行比较。然后执行从线程上下文到主上下文的合并。此时,您可以收到CoreData中更新数据的通知,并更新视图
您甚至可以使用NSFetchedResultsController
来进一步简化此操作。Hmm这似乎是我计划要做的,如果我正在做不同的事情,请纠正我。目前,我正计划将CoreData中的对象保存在后台线程中(在新的MOC中),然后在任何值发生更改时与默认MOC合并。在我的完成块上,我将设置更新对象的数据
,VC上的观察者将获得该通知并更新ui。