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

iOS后台任务同步化应用程序流,ios,swift,cocoa-touch,core-data,core-location,Ios,Swift,Cocoa Touch,Core Data,Core Location,我用iOS编程没多久。我主要是编程UI相关的东西,如动画、自定义uicontrol等 我需要在我的新应用中: 显示装载活动指示器,同时: 从服务器加载一些远程数据并解析它们并存储在本地核心数据中 从本地核心数据加载一些数据 从位置服务获取用户位置 在此之后,我有了显示下一个视图控制器和关闭加载指示器所需的所有数据 问题是我怎样才能做到这一切?我需要支持iOS9、iOS10、11、12。我知道这需要在后台线程中完成,然后我需要合并每个任务中的所有数据并切换到下一个视图控制器。我不能使用任何外部

我用iOS编程没多久。我主要是编程UI相关的东西,如动画、自定义uicontrol等

我需要在我的新应用中: 显示装载活动指示器,同时:

  • 从服务器加载一些远程数据并解析它们并存储在本地核心数据中
  • 从本地核心数据加载一些数据
  • 从位置服务获取用户位置
在此之后,我有了显示下一个视图控制器和关闭加载指示器所需的所有数据


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

这是一个非常复杂的问题,正如你所说,可以用几种方法解决所有这些问题。但可以肯定的是,我可以给你一些关于哪些步骤更适合遵循的核心提示:

  • 在单独的线程中运行与网络通信有关的所有内容的管理。也许可以使用DispatchQueue()类在单独的队列上运行它。一旦在同一线程中收到数据,也许可以直接转换这些信息并将其存储在CoreData数据库中
  • 要存储到CoreData中,首先需要了解它是如何工作的,所以基本上可以搜索一些非常简单的教程,了解如何从零开始在XCode中创建第一个数据库。在您能够运行并执行一个非常简单的步骤之后,您将能够进入第二步,并尝试将其与之前从网络下载的数据集成。这里有一篇好文章给你:
  • 获取位置是一个单独的研究领域,因为您必须研究iOS中允许哪些背景模式(实际上只允许少数)。之后,您需要确定您的软件属于哪一类后台位置应用程序。之后,您必须深入挖掘并发现Swift/Objective-C中的协议和代理是如何工作的,以便正确管理传感器检索到的最后一个位置值。这里有一篇好文章给你:
  • 最后,当您连接所有这些流时,您可以考虑如何显示加载指示器。基本上,您需要将它从工具拖放到情节提要中,通过使用iAction或IBOutlet将其互连,具体取决于您想何时显示它以及在何种特定情况下。然后在正确的代码流中使用相对方法startAnimating或stopAnimating(这实际上取决于您如何构造前面的所有要点)
因为你的问题很笼统,包含了很多子步骤,所以基本上确实需要进行彻底的研究和分析。
我尽可能多地总结了最重要的要点。我希望我建议给你的链接能对你有所帮助。祝你好运

太宽了。显示活动指示器下一步查找可编码协议,将自定义结构转换为数据(json)并在本地写入数据