【问题标题】:Where in my iOS (Swift) application lifecycle should i fetch all my data from firebase?我应该在我的 iOS (Swift) 应用程序生命周期的哪个位置从 firebase 获取我的所有数据?
【发布时间】:2018-01-19 08:43:14
【问题描述】:

在从 firebase 获取所有数据之前,用户可能无法与我的应用交互。所以到目前为止我的新手计划是:

  1. 启动微调器
  2. 从 Firebase 获取数据(异步)
  3. 第 2 步异步作业完成后,隐藏微调器

我作为新手的第一个想法通常不是要走的路,必须有一个更聪明的方法,其中涉及框架(可能是应用程序生命周期中的某个位置)或最佳实践模式。
我在www上找不到任何有用的东西。链接也很有帮助。

【问题讨论】:

  • 这是第一次发布还是每次发布?
  • 这是第一次发布
  • 那么我建议在同步发生时让用户通过一系列介绍屏幕。这将是最好的用户体验
  • 我认为我误解了你的问题。它适用于每次启动。
  • 我明白了,除了像答案中建议的那样加载 viewDidLoad 并显示一个微调器可能会缓存以前的同步然后在后台加载?

标签: ios swift ios-lifecycle


【解决方案1】:

你应该在 ViewDidLoad() 中获取你的数据

viewDidLoad() - 当视图控制器的内容视图(其视图层次结构的顶部)创建并从情节提要加载时调用。在调用此方法时,可以保证视图控制器的出口具有有效值。使用此方法执行视图控制器所需的任何其他设置。

通常,iOS 只调用一次 viewDidLoad(),当它的内容视图第一次被创建时;但是,第一次实例化控制器时不一定会创建内容视图。相反,它是在系统或任何代码第一次访问控制器的视图属性时延迟创建的。

当您在加载时查看您的数据。

如果您想在显示视图时刷新数据,那么我可以使用。

viewWillAppear()——在视图控制器的内容视图被添加到应用程序的视图层次结构之前调用。使用此方法触发在内容视图显示在屏幕上之前需要发生的任何操作。尽管有这个名字,只是因为系统调用了这个方法,它并不能保证内容视图会变得可见。该视图可能被其他视图遮挡或隐藏。这个方法只是表明内容视图即将被添加到应用程序的视图层次结构中。

【讨论】:

    【解决方案2】:

    我建议您创建一个视图控制器,该控制器负责显示应用程序的加载情况,并在后台与您的后端同步。 拥有这样一个视图控制器以及加载指示器,您还可以显示百分比进度以获得更好的用户体验。 同步完成后,您可以导航到主控制器。

    其次,如果您再次启动时再次加载相同的数据。添加同步检查,以便一次又一次下载不同的数据,从而保留应用程序的时间和空间。

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 1970-01-01
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2015-01-03
      • 2019-01-04
      相关资源
      最近更新 更多