【问题标题】:iOS REST App - best practice for handling http requests(syncing data with server) [closed]iOS REST App - 处理 http 请求的最佳实践(与服务器同步数据)[关闭]
【发布时间】:2015-01-23 22:07:12
【问题描述】:

我是 iOS 新手..

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

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

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

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

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

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

什么是标准方法?

您能否至少指出一些我可以了解更多信息的阅读材料或示例项目。

如果可能的话,我希望在不使用第 3 个 api 的情况下查看/阅读一些解决方案,因为我已经在 iOS 本身中承受了很多新东西 :)

【问题讨论】:

  • 我正在写一篇博文来讨论我们最终得到了什么,但是我们的应用程序使用了一个基于 Core Data 的内部异步通用对象图同步系统,它与我们类似的通用 REST 通信- 类对象 API。这是我的评论,解释了它的几个方面:stackoverflow.com/a/27532392/131779 希望它是有用的阅读材料。

标签: ios rest design-patterns core-data


【解决方案1】:

在为 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 解析(可能还有对象映射)。就此而言,像 AFNetworking (https://github.com/AFNetworking/AFNetworking) 这样的框架会大大减轻您的生活(尽管您可以使用 cocoa 中的类来完成所有这些工作)。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 2011-01-24
      • 2020-12-24
      • 2013-03-11
      • 2013-01-18
      • 2010-09-07
      相关资源
      最近更新 更多