Ios 如果泛型类需要子类,则找不到协议初始化
我创建了一个带有泛型逻辑的小示例,我不明白这个错误意味着什么。我认为指定的初始值设定项存在一些问题 希望有人已经处理过了,可以解释给我听Ios 如果泛型类需要子类,则找不到协议初始化,ios,swift,generics,swift-protocols,Ios,Swift,Generics,Swift Protocols,我创建了一个带有泛型逻辑的小示例,我不明白这个错误意味着什么。我认为指定的初始值设定项存在一些问题 希望有人已经处理过了,可以解释给我听 protocol Test { init(value: Int) } class ClassTest<T: Test> where T: UIView { var t: T init() { t = T(value: 2) //error: } } 协议测试{ init(值:Int) } 类Cl
protocol Test {
init(value: Int)
}
class ClassTest<T: Test> where T: UIView {
var t: T
init() {
t = T(value: 2) //error:
}
}
协议测试{
init(值:Int)
}
类ClassTest,其中T:UIView{
变量t:t
init(){
t=t(值:2)//错误:
}
}
给出以下编译器错误:
参数标签“(值:)”与任何可用重载都不匹配
这个bug已经在Swift Jira中打开了:(现在试试这个黑客:
class类测试,其中T:UIView{
变量t:t
init(){
//t=t(值:2)//编译器错误!
t=create()
}
}
func create()->T{
返回T(值:2)
}
我猜少了一个约束就可以让编译器运行了:-)
编译器仍然损坏?检查是否已修复此错误。我测试过,它运行正常;)为什么要在T:UIView中添加
?如果它是UIView类,则需要实现init(coder:),这就是为什么要error@PauloMattos尝试在Xcode:)@PauloMattos中检查它,该类需要从另一个类继承才能复制:这是一个已经归档的bug,请参阅
class ClassTest<T: Test> where T: UIView {
var t: T
init() {
// t = T(value: 2) // Compiler error!
t = create()
}
}
func create<T: Test>() -> T {
return T(value: 2)
}