[英]Swift check if class conforms to protocol always true
protocol Device {
}
protocol ActiveDevice: Device {
}
protocol NoActive: Device {
}
視圖控制器:
class ViewController : UIViewController {
let device: Device
}
設置ViewController的設備。 currentDevice是一個符合協議Device的對象
vc.device = currentDevice as! ActiveDevice
檢查它是否符合協議:
if let currentDevice = device as? NoActive {
print("Its not active device")
}else if let currentDevice = device as? ActiveDevice {
print("Its active device")
}else {
print("Its just a device")
}
它總是打印Its not active device
,在這種情況下我會期望打印Its active device
請檢查以下代碼,如果有幫助請告訴我。
protocol Device {
}
protocol ActiveDevice: Device {
}
protocol NoActive: Device {
}
// class TestDevice: Device {
// class TestDevice: ActiveDevice {
class TestDevice: NoActive {
}
let currentDevice = TestDevice()
// let device: Device = currentDevice as! ActiveDevice
(It threw error as "Could not cast value of type '__lldb_expr_9.TestDevice' (0x11a2f9090) to '__lldb_expr_9.ActiveDevice' (0x11a6d0628)."). We cannot do this.
let device: Device = currentDevice
if device is NoActive {
print("Its not active device")
}else if device is ActiveDevice {
print("Its active device")
}else {
print("Its just a device")
}
現在,輸出是“它不是活動設備”。 在將TestDevice更改為“ActiveDevice”后,它會打印“其活動設備”等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.