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

时间:2016-05-31 22:37:08

标签: ios uitableview

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

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

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

通常我会有类似

的东西
var myData : [myOption]?

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

1 个答案:

答案 0 :(得分:0)

通常,您希望将数据保留在视图控制器之外,并且您绝对希望将API调用保留在视图控制器之外。创建一个"模型"与API对话的对象。最简单的方法是将模型设为shared singleton。 (有一些理由不在这里使用单身人士,但如果你是新人,我绝对会这样做。)

同样,为了简单起见,我建议使用NSNotification让模型在数据发生变化时发布。视图控制器将观察此通知,并在发布时,它会调用reloadData来刷新自己。所有数据源方法(numberOfRowsInSection等)都是对模型的简单调用。

这是构建Cocoa应用程序的传统方式,也是我强烈推荐人们开始的方式。随着您了解更多,您可能会发现其他工具可能比NSNotification更好,您可以学习其他替代单例的模式。而且,

展示所有这些的示例代码IMO之一是The Elements。我强烈建议你去研究它。它在ObjC中,但编写得非常清楚,学习将ObjC转换为Swift是Cocoa开发人员的核心竞争力。 (元素不与服务器通信,但它演示了您需要的模型视图控制器模式。)