iOS REST 应用程序 - 处理 http 请求的最佳实践(与服务器同步数据)

iOS REST App - best practice for handling http requests(syncing data with server)

我是iOS新手..

我正在尝试构建 uild REST 应用程序来获取和更新数据 from/to 一些服务器(通过 http get 和 post 请求使用 JSON 数据格式).

我需要一些本地保存机制(如 Core Data),以便应用程序可以离线使用,但一旦网络可用,它就必须与服务器同步(发送、刷新)。

服务器上会有很多不同的请求,因此可能会有很多网络和 json 解析代码。 我想避免 viewController classes 因大量 json 解析代码而过载。

我的问题是 - iOS 上实现此目标的最佳做法是什么?

我是否应该使用一个 apiCommunicator 处理所有请求(使用 NSUrlConnection)(并使用委派 ui-更新到已请求数据的 viewController)?

或者我应该在不同的 class 中进行 api 调用(每个模型一个 class)?

什么是标准方法?

你能不能至少给我一些阅读材料或示例项目,我可以从中了解更多信息。

如果可能的话,我想 see/read 一些解决方案而不使用第 3 个 api,因为我已经在 iOS 本身中加载了很多新东西 :)

只需在您的项目中实施 AFNetworking 并阅读文档。这会很有帮助 - https://github.com/AFNetworking/AFNetworking

在为iOS(https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html)开发时首先考虑MVC。

我个人的偏好是有一个模型 class 与您的 API 通信并通过委托(或块或通知,取决于许多因素)报告结果 (http://blog.shinetech.com/2011/06/14/delegation-notification-and-observation/) ).这个 class 可能是单例的,因为您的应用程序可能需要不断地与您的服务器通信,并且您需要一个始终存在的对象来处理您的请求。

因此概览如下所示:

  • 您的视图要求其控制器执行某些操作(通常是高级方法)。

  • 您的控制器层将转换您的视图请求并执行适当的任务(其中一项可能是 API 调用)。

  • 您的控制器将要求模型执行 api 方法(比如 GET)。

  • 它将在您的模型完成后接收结果(可能将 JSON 结果映射到一个对象),然后将其传递给可能需要反映某些内容的视图 UI.

对于您的模型 class,您可以使用 NSUrlConnection 进行简单的 api 调用。但是正如您所说,您将需要 JSON 解析(可能还有对象映射)。就此而言,像 AFNetworking (https://github.com/AFNetworking/AFNetworking) 这样的框架会让你的生活轻松很多(尽管你可以使用 cocoa 中的 classes 来完成所有这些)。