【发布时间】:2023-04-10 14:29:01
【问题描述】:
我想为这样的数据获取服务创建一个通用协议:
protocol FetchDataDelegate: AnyObject {
associatedtype ResultData
func didStartFetchingData()
func didFinishFetchingData(with data: ResultData)
func didFinishFetchingData(with error: Error)
}
class Controller: UIViewController, FetchDataDelegate {
func didStartFetchingData() {
//...
}
func didFinishFetchingData(with data: ResultData) {
//...
}
func didFinishFetchingData(with error: Error) {
//...
}
}
class NetworkManager {
weak var delegate: FetchDataDelegate?
//...
}
Controller 类将引用 NetworkManager 实例,通过它,我想启动网络操作。当操作结束时,我想调用适当的委托函数将结果传回控制器。但是通过这个设置,我得到了以下错误: 协议 'FetchDataDelegate' 只能用作通用约束,因为它具有 Self 或关联的类型要求 问题是我应该怎么做才能将此泛型协议用作变量类型?或者如果不可能,那么正确的方法是什么?谢谢!
【问题讨论】:
标签: swift