具有协议泛型的初始化程序不起作用

时间:2020-09-25 22:23:27

标签: swift

我有一个使用泛型的协议:

protocol DataService {
  associatedtype T

  var getData: ((T) -> Void)? { get set }
}

我试图在初始化程序中用作参数:

class MyProvider {
  var service: DataService

  init(service: DataService) {
    self.service = service
  }
}

但是,我不断得到:

Protocol 'DataService' can only be used as a generic constraint because it has Self or associated type requirements

我尝试了下面的代码,但是没有用:

init<T: String>(service: DataService) {
  self.service = service
}

1 个答案:

答案 0 :(得分:2)

您可以改为创建通用类:

class MyProvider<T> where T: DataService {
    var service: T

    init(service: T) {
        self.service = service
    }
}