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時?表示的
重要的是,每個類實現它的類型表示枚舉,但類可以檢查符合的以協議