首页 > 解决方案 > iOS后台任务同步app流程

问题描述

我在 iOS 上编程的时间不长。我主要是编写 UI 相关的东西,比如动画、自定义 UIControls 等。

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

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

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

标签: iosswiftcocoa-touchcore-datacore-location

解决方案


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

  • 在单独的线程中运行与网络通信有关的所有内容的管理。也许您可以使用类 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 (这实际上取决于您如何构造前面的所有要点)。

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


推荐阅读