- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码来根据 rvc 的类型确定不同的操作:
let rvc = UIApplication.sharedApplication().delegate.window?.rootViewController
if rvc?.isKindOfClass(UINavigationController)
{
push the view controller
}
else
{
present the view controller
}
但是,当我使用 Storyboard执行此操作时,初始 View Controller 不是 UINavigationController,只是 UIViewController 的后代,然后执行 if 语句的第一个分支。
更新:问题实际上出在语法上,因为在下面的代码中,每个 if 语句的计算结果都是 true:
if rvc?.isKindOfClass(UIViewController)
{
println("UIViewController")
}
if rvc?.isKindOfClass(UINavigationController)
{
println("nav controller")
}
if rvc?.isKindOfClass(NSNotification)
{
println("should not get here")
}
if rvc?.isKindOfClass(put whatever you want here)
{
println("should not get here")
}
因此,rvc?.isKindOfClass 的语法/语义一定有问题,但它有什么不正确之处?
最佳答案
作为 Grimxn 回答的附录(以及对 if rvc?.isKindOfClass(xxxAnyClassxx) {
和 if rvc!.isKindOfClass(...) 之间区别的问题的回应{
):
当您使用 ?.method
(即选项链接)时,该方法的结果被封装在一个 Optional 中。这就是重点;选项链的最终结果将是 .Some(链中最后一个方法的结果)
或 nil
如果链中的任何点导致 无
。
如果 Optional
包含某些内容,则在 if
语句中测试 Optional
的逻辑值将返回 true
(即,它的值为 .Some(...)
),如果它是 nil
,则为 false
——它不查看Optional
中的值是。在这种情况下,它是您实际要检查的包含值。
关于ios - someConstant?.isKindOfClass(SomeClassType) 的计算结果总是为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24703156/
我有以下代码来根据 rvc 的类型确定不同的操作: let rvc = UIApplication.sharedApplication().delegate.window?.rootViewCont
我正在尝试转换一个 if 条件: unless defined? SomeConstant # do some stuff end 进入 native C 扩展的一部分。有人知道如何在 C API
我是一名优秀的程序员,十分优秀!