相关疑难解决方法(0)

无法在Swift中的另一个协议中使用协议作为关联类型

我有一个协议,Address它继承自另一个协议Validator,并Address满足Validator扩展中的要求.

还有另一个协议,FromRepresentable它有一个associatedType(ValueWrapper)要求Validator.

现在,如果我尝试使用Addressas associatedType,那么它不会编译.它说,

推断类型'Address'(通过匹配要求'valueForDetail')无效:不符合'Validator'.

这种用法是非法的吗?我们是不是应该能够使用Address的地方Validator,因为所有Addresses都是Validator.

下面是我正在尝试的一段代码.

enum ValidationResult {
    case Success
    case Failure(String)
}

protocol Validator {
    func validate() -> ValidationResult
}

//Address inherits Validator
protocol Address: Validator {
    var addressLine1: String {get set}
    var city: String {get set}
    var country: String {get set}
}

////Fulfill Validator protocol requirements in extension
extension …
Run Code Online (Sandbox Code Playgroud)

ios associated-types swift swift-protocols

12
推荐指数
1
解决办法
3259
查看次数

标签 统计

associated-types ×1

ios ×1

swift ×1

swift-protocols ×1