嘿,我正在为我们的应用程序做模型层。
有些要求是这样的:
我已经查看了关于构建服务器驱动的用户体验的 WWDC10第117节,花了一些时间查看了 客观资源、 核心资源和 RestfulCoreData框架。
Objective Resource 框架本身并不与 Core Data 对话,它只是一个 REST 客户机实现。Core Resource 和 RestfulCoreData 都假设您在代码中与 Core Data 对话,它们解决了模型层后台的所有具体细节。
到目前为止,一切看起来都还不错,最初我认为 Core Resource 或 RestfulCoreData 都可以满足上述所有需求,但是... ... 有几个问题它们似乎都没有正确解决:
当您在托管对象上下文上调用 - (BOOL)save:(NSError **)error
时,核心资源恰好向服务器发出所有请求,因此能够以某种方式向服务器提供底层请求的正确 NSERerror 实例。但是它会阻塞调用线程,直到保存操作完成。失败。
RestfulCoreData 保持 -save:
调用的完整性,并且不会为客户端线程引入任何额外的等待时间。它只是监视 NSManagedObjectContextDidSaveNotification
,然后在通知处理程序中向服务器发出相应的请求。但是通过这种方式,-save:
调用总是成功地完成(好吧,假设 Core Data 同意保存的更改) ,实际调用它的客户机代码无法知道保存可能没有传播到服务器,因为一些 404
或 421
或任何服务器端错误发生。而且,本地存储变得更新了数据,但是服务器永远不会知道这些更改。失败。
因此,我正在寻找解决所有这些问题的可能方案/通用实践:
-save:
调用。有什么想法吗?