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

时间:2015-01-23 22:07:12

标签: ios rest design-patterns core-data

我是iOS非常新鲜的初学者..

我正在尝试构建REST应用程序,该应用程序从/向某些服务器获取和更新数据(通过使用JSON数据格式的http get和post请求)。

我需要一些本地保存机制(如核心数据),以便应用程序可以脱机使用,但只要网络可用,就必须与服务器同步(发送,刷新)。

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

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

我是否应该有一个带有所有请求的apiCommunicator(使用NSUrlConnection)(并使用委托给请求数据的viewController的ui-updates)?

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

什么是标准方法?

你能否至少指点一些我可以了解更多的读物或示例项目。

如果可能的话,我希望看到/阅读一些解决方案而不使用第三版api,因为我已经在iOS内部运行了很多新东西:)

2 个答案:

答案 0 :(得分:2)

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

我个人的偏好是拥有一个与API通信的模型类,并通过委托(或阻止或通知,根据许多因素(http://blog.shinetech.com/2011/06/14/delegation-notification-and-observation/))报告结果。这个类可能是单例,因为您的应用程序可能需要经常与您的服务器通信,并且您需要一个始终处于活动状态的对象来处理您的请求。

所以概述看起来像这样:

  • 您的观点要求他们的控制器做某事(通常是高级方法)。

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

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

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

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

答案 1 :(得分:1)

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