【问题标题】:iOS background tasks synhronization app flowiOS后台任务同步app流程
【发布时间】:2019-04-12 13:17:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


【解决方案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 (这实际上取决于您如何构造所有前面的要点)。

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

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多