当数据来自远程API时,在哪个函数中加载tableView数据



我有一个UITableViewController实例,它是数据源和委托。

数据由远程API提供,需要一些时间才能调用。

我当然知道如何调用和填充单元格,但我不知道我需要在哪个函数中调用加载数据的API。

通常我会有类似的东西

var myData : [myOption]?

当我填充单元格时,我可以问这个数组是否为零,如果不是,我可以调用API,这是一个好方法吗

通常情况下,您会希望将数据保留在视图控制器之外,并且您绝对希望将API调用保留在视图控制之外。创建一个与API对话的"模型"对象。实现这一点的最简单方法是使模型成为共享的单例。(这里有一些不使用singleton的原因,但如果你是新手,我绝对会这样做。)

同样,为了保持简单,我建议使用NSNotification让模型在数据发生更改时宣布。视图控制器会观察到这个通知,当它被发布时,它会调用reloadData来刷新自己。所有的数据源方法(numberOfRowsInSection等)都将是对模型的简单调用。

这是构建Cocoa应用程序的传统方式,也是我强烈建议人们开始的方式。随着学习的深入,您可能会发现其他比NSNotification更好的工具,并且您可以学习其他替代singleton的模式。你肯定会学到比reloadData更好的更新表格的方法,但这将为你提供一个良好、坚实的改进基础。

其中一个更好的示例代码,IMO,展示了所有这一切是元素。我强烈建议学习它。它在ObjC中,但写得很清楚,学习将ObjC转换为Swift是Cocoa开发人员的核心能力。(Elements不与服务器对话,但它展示了您需要的模型-视图-控制器模式。)

最新更新