Swift:将AnyObject与`is`语法进行比较

Jan*_* S. 7 ios swift

我想检查我的发件人是否是Xyz-Object

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
let senderIsBonusProduct = sender is Xyz
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误:

无法找到从"Int1"类型到"Bool"类型的用户定义转换

GoZ*_*ner 5

该表达式sender is Xyz返回一个Boolif sender的类型取决于Xyz。看来有一个编译器错误,sender is Xyz实际上是在返回一个Int1内部没有被强制转换为的错误Bool

解决方法是:

let bonus = (sender is Xyz ? true : false)
Run Code Online (Sandbox Code Playgroud)

  • 这就解释了代码的作用,但是为什么编译失败? (2认同)