2017-11-10 134 views
1

如何在类似情况下检查对象是否符合协议'可表示'?在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 
} 

错误:协议“可表示的”只可能是因为它具有自我或用作通用约束相关联的类型要求 如果令obj = OBJ时?表示的

重要的是,每个类实现它的类型表示枚举,但类可以检查符合的以协议

回答

相关问题