Ste*_*cks 16 uiview swift swift3
所以我有这个代码:
if view.isKindOfClass(classType){...}
Run Code Online (Sandbox Code Playgroud)
这在Swift 2中运行良好,但是现在我在Swift 3中,我得到了这个错误:
类型的值UIView没有成员isKindOfClass
我如何在Swift 3中测试它?
Mar*_*uiz 36
您可以在Swift 3中尝试这三个选项:
选项1:
if view is UITabBarItem {
}
Run Code Online (Sandbox Code Playgroud)
选项2:
if view.isKind(of:UITabBarItem.self) {
}
Run Code Online (Sandbox Code Playgroud)
选项3:
if view.isMember(of:UITabBarItem.self) {
}
Run Code Online (Sandbox Code Playgroud)
isKind:of和isMember:of之间的区别是:
你可以使用,isKind(of:)但最好使用更加swifty is和as:
看一个愚蠢的例子:
import Foundation
class Base {}
class SuperX: Base {}
class X: SuperX {}
class Y {}
func f(p: Any) {
print("p: \(p)")
guard let x = p as? Base
else { return print(" Unacceptable") }
if x is X {
print(" X")
}
if x is SuperX {
print(" Super X")
}
else {
print(" Not X")
}
}
f(p: Base())
f(p: SuperX())
f(p: X())
f(p: "hey")
f(p: Y())
f(p: 7)
Run Code Online (Sandbox Code Playgroud)
在游乐场中运行代码,输出将是:
p: Base
Not X
p: SuperX
Super X
p: X
X
Super X
p: hey
Unacceptable
p: Y
Unacceptable
p: 7
Unacceptable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17409 次 |
| 最近记录: |