我正在用 Swift 为 iOS 制作一个应用程序,并且我试图将我的 API 调用逻辑保留在我的 ViewControllers 之外。我按照本教程进行了 1 个 API 调用,我将在下面进行描述。
我正在创建 ViewController 将实现的协议“APIControllerProtocol”,然后我正在创建一个 APIController 类,该类将包含一个名为“delegate”的属性来保存 APIControllerProtocol 类型的实例。该协议被简单地定义为
protocol APIControllerProtocol {
func didReceiveAPIResults(result: SwiftyJSON.JSON)
}
并且 ViewController 会实现在 API 调用返回 JSON 数据后调用的 didReceiveAPIResults 函数。ViewController 将包含 APIController 的一个实例,以调用一个调用 API 的函数。
此时我想让更多的 ViewController 执行 API 调用,如果我只需要对每个 ViewController 进行 1 个 API 调用,我可以在 APIController 中添加另一个函数,我可以让新的 ViewController 使用相同的协议。但是,如果存在需要进行 2 次或更多 API 调用的 ViewController,则此逻辑是有缺陷的,因为
- 我不能以两种不同的方式在 ViewController 中调用 didReceiveAPIResults,
我不认为向 APIController 类添加多个“委托”属性来保存不同类型的协议是要走的路。
在一个协议中定义多个函数意味着我必须在 ViewControllers 中实现所有这些函数,而这些函数只需要进行 1 个 API 调用。
我解决这个问题的想法是
为每个 ViewController 创建一个 APIController 类和 APIControllerProtocol
在 APIControllerProtocol 中使用可选函数,因此并非每个 ViewController 都必须实现所有函数(我不知道这将如何真正起作用)
任何其他见解将不胜感激。