iOS后台任务同步应用程序流程

时间:2018-11-08 23:38:24

标签: ios swift cocoa-touch core-data core-location

我不久才在iOS中编程。我主要是在编程与UI相关的东西,例如动画,自定义UIControl等。

我需要在新应用中执行以下操作: 同时显示加载活动指示器:

  • 从服务器加载一些远程数据以解析它们并将其存储在本地核心数据中
  • 从本地核心数据加载一些数据
  • 从位置服务获取用户位置

此后,我拥有了显示下一个视图控制器和关闭加载指示器所需的所有数据。

问题是我该怎么做?我需要支持iOS9,iOS10、11、12。我知道这需要在后台线程中完成,然后我需要合并每个任务的所有数据并切换到下一个视图控制器。我不能使用任何外部库,例如rx-swift或promise-kit。也许有任何经验丰富的iOS开发人员可以给我一些如何处理此类应用程序流程的主要指导方针?我可以想象有很多方法可以做到,有些更好,有些更差。任何指导方针对我都会非常有帮助。谢谢。

1 个答案:

答案 0 :(得分:-1)

这是一个非常复杂的问题,正如您所说,可以通过多种方式解决所有这些问题。但是可以肯定的是,我可以为您提供一些核心提示,告诉您最好遵循哪些步骤:

  • 在单独的线程中运行与网络通信有关的所有工作的管理。也许您可以使用类DispatchQueue()在单独的队列上运行它。在同一线程中接收到数据后,也许您可​​以直接转换这些信息并将其存储在CoreData数据库中。
  • 要存储到CoreData中,首先需要了解它的工作原理,因此,基本上可以搜索一些非常简单的教程,以了解如何在XCode中从零开始创建您的第一个数据库。运行并执行一个非常简单的步骤后,您将可以转到第二步,因此尝试将其与以前从网络下载的数据集成在一起。这里有一篇适合您的好文章:https://www.raywenderlich.com/7569-getting-started-with-core-data-tutorial
  • 获取位置是一个单独的研究领域,因为您必须研究iOS中允许使用哪些背景模式(实际上只有少数几种背景模式)。之后,您需要确定您的软件属于哪种背景定位应用程序类别。之后,您必须深入研究并发现协议和委托在Swift / Objective-C内部的工作方式,以便正确管理传感器检索到的最后一个位置值。这是一篇适合您的好文章:https://www.raywenderlich.com/5247-core-location-tutorial-for-ios-tracking-visited-locations
  • 当最终将所有这些流程互连时,您可以考虑如何显示加载指示器。基本上,您需要将其从工具中拖放到情节提要中,使用IBAction或IBOutlet将其互连,具体取决于您想显示它的时间以及在哪种情况下。然后在正确的代码流中使用相对方法startAnimating或stopAnimating(这实际上取决于您之前所有项目符号的结构)。

由于您的问题非常笼统,并且包含许多子步骤,因此,基本上,确实需要对其进行彻底的研究和分析。 我试图尽可能地总结最重要的要点。希望我建议给您的链接能有所帮助。祝好运。