2016-10-01 41 views
13

所以我有这样的代码:的UIView isKindOfClass斯威夫特3

if view.isKindOfClass(classType){...} 

这斯威夫特2工作正常,但现在我在斯威夫特3,我得到这个错误:

类型的值UIView没有任何成员isKindOfClass

如何在Swift 3中测试这个?

+3

在斯威夫特你通常会使用'is'运营商的确切类的实例,请参见http://计算器。 COM /问题/ 24019707 /使用-iskindofclass与 - 迅速。 –

回答

4

您可以使用isKind(of:)但最好使用更SWIFTY isas

见哑例如:

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) 

运行在操场代码的输出将是:

p: Base 
    Not X 
p: SuperX 
    Super X 
p: X 
    X 
    Super X 
p: hey 
    Unacceptable 
p: Y 
    Unacceptable 
p: 7 
    Unacceptable 
29

你可以试试这三个选项Swift 3

选项1:

if view is UITabBarItem { 

} 

选项2:

if view.isKind(of:UITabBarItem.self) { 

} 

选项3:

if view.isMember(of:UITabBarItem.self) { 

} 

isKind之间的差:以及isMember:的是:

  • isKind:如果接收方是确切类的实例,或者接收方是该类的任何子类的实例,则返回YES。
  • isMember:中只有;是接收方是否是你核对