2017-11-10 175 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時?表示的

重要的是,每個類實現它的類型表示枚舉,但類可以檢查符合的以協議

回答

相關問題