小编Ser*_*yev的帖子

使用 Swift 中的关联类型检查是否符合协议

在类似情况下,如何检查对象是否符合“可表示”协议?

protocol Representable {
    associatedtype RepresentType
    var representType: RepresentType { get set }
}

class A: UIView, Representable {
    enum RepresentType: String {
        case atype = "isa"
    }
    var representType: RepresentType = .atype
}

class B: UIView, Representable {
    enum RepresentType {
        case btype(value: String?)
    }
    var representType: RepresentType = .btype(value: nil)
}

let obj = A()
if let obj = obj as? Representable {  <<<<<<<<<<<< error
    obj.representType = A.RepresentType.atype
}
Run Code Online (Sandbox Code Playgroud)

错误:协议 'Representable' 只能用作通用约束,因为如果 let obj = obj as? 具有代表性 …

protocols confirmation swift swift4

5
推荐指数
1
解决办法
2105
查看次数

标签 统计

confirmation ×1

protocols ×1

swift ×1

swift4 ×1