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”后,它会打印“其活动设备”等等。