簡體   English   中英

Swift檢查類是否符合協議始終為true

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM