簡體   English   中英

如何測試實例是否是Swift中的特定類或類型?

[英]How can I test if an instance is a specific class or type in Swift?

Objective-C有兩種方法來測試對象是否是特定類或子類的實例:

- (BOOL)isMemberOfClass:(Class)aClass;

返回一個布爾值,指示接收者是否是給定類的實例。

- (BOOL)isKindOfClass:(Class)aClass;

返回一個布爾值,指示接收者是給定類的實例還是從該類繼承的任何類的實例。

在Swift中,我可以使用is運算符測試后者:

if myVariable is UIView {
    println( "I'm a UIView!")
}

if myVariable is MyClass {
    println( "I'm a MyClass" )
}

如何測試實例是否是Swift中的特定類或類型(即使在處理沒有NSObject子類時)?

注意:我知道func object_getClassName(obj: AnyObject!) -> UnsafePointer<Int8>

請參閱我的答案(可能重復) https://stackoverflow.com/a/26365978/195691 :現在可以比較Swift中動態類型的標識:

myVariable.dynamicType === MyClass.self

Swift 3+我們可以使用type(of:T)函數來做到這一點。

let view = UIView()
if type(of: view) == UIView.self {
    print("view isMember of UIView")
}

除了object_getClassName() ,還可以通過結合object_getClass()使用定義相等來維護不變量。

object_getClass(X()) === object_getClass(X()) // true
object_getClass(X()) === object_getClass(Y()) // false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM