【发布时间】:2015-08-26 18:45:40
【问题描述】:
我知道可以按照这个问题中的描述测试可选与可选:Swift: testing against optional value in switch case
但我想做的是用可选的 case 值测试一个非可选值:
switch nonOptionalView{
case optionalView1:
// Do something
case optionalView2:
// Do something else
}
Xcode 返回错误“可选 xxx 的值未解包” 如果我添加一个“?”在 case 语句的末尾,我得到“?模式无法匹配 'UIView' 类型的值”
【问题讨论】:
-
你可以试试“!”而不是“?”告诉我它是否有效?
-
不幸的是,它在展开可选值时抛出了一个意外发现的 nil
-
然后使用“if let”对其进行测试...这将打开它,前提是它是您尝试强制转换的类并且永远不会崩溃您的应用程序,即使经过测试对象为零...如果展开的值可能为零(您最近的评论暗示),您还必须在切换之前测试可选...请尝试我已经测试过的最后一条评论,并添加一个 if (nonOptionalView == nil) {return} 在切换之前...这也可以
-
这两种方法都可以解决你的问题
-
谢谢 Neo,我试图避免使用 if let 语句,看起来这是不可能的。
标签: swift