Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MVC和KVO的设计协助_Ios_Performance_Model View Controller_Key Value Observing - Fatal编程技术网

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。