我有一个UITableViewController实例,它是数据源和委托。
数据由远程API提供,需要一些时间来调用。
我知道如何调用和填充单元格,但我不知道我需要在哪个函数中调用加载数据的API。
通常我会有类似
的东西var myData : [myOption]?
当我填充单元格时,我可以询问该数组是否为零,如果不是,我可以调用API,这是一个好方法吗?
答案 0 :(得分:0)
通常,您希望将数据保留在视图控制器之外,并且您绝对希望将API调用保留在视图控制器之外。创建一个"模型"与API对话的对象。最简单的方法是将模型设为shared singleton。 (有一些理由不在这里使用单身人士,但如果你是新人,我绝对会这样做。)
同样,为了简单起见,我建议使用NSNotification
让模型在数据发生变化时发布。视图控制器将观察此通知,并在发布时,它会调用reloadData
来刷新自己。所有数据源方法(numberOfRowsInSection
等)都是对模型的简单调用。
这是构建Cocoa应用程序的传统方式,也是我强烈推荐人们开始的方式。随着您了解更多,您可能会发现其他工具可能比NSNotification
更好,您可以学习其他替代单例的模式。而且,
展示所有这些的示例代码IMO之一是The Elements。我强烈建议你去研究它。它在ObjC中,但编写得非常清楚,学习将ObjC转换为Swift是Cocoa开发人员的核心竞争力。 (元素不与服务器通信,但它演示了您需要的模型视图控制器模式。)