2017-01-13 122 views
11

如何識別Swift中變量的類型。對於例如如果我寫知道Swift中變量的類型

struct RandomStruct.... - 類型應該給我struct而不是RandomStruct

,或者如果我寫class RandomClass...的類型應該是class,而不是RandomClass

我一直在使用Mirror.subjectTypetype(of:)兩者試圖使輸出RandomStructRandomClass

+0

你誤解是什麼「類型」的意思。 – Raphael

回答

9

你是密切與使用Mirror:你可以看看displayStyle財產Mirror的(枚舉類型Mirror.DisplayStyle的),反映在你的類型的實例

struct Foo {} 
class Bar {} 

let foo = Foo() 
let bar = Bar() 

if let displayStyle = Mirror(reflecting: foo).displayStyle { 
    print(displayStyle) // struct 
} 

if let displayStyle = Mirror(reflecting: bar).displayStyle { 
    print(displayStyle) // class 
} 

只需注意.optional也是一個案例在DisplayStyle枚舉Mirror,所以一定要反映混凝土(展開)類型:

struct Foo {} 

let foo: Foo? = Foo() 

if let displayStyle = Mirror(reflecting: foo as Any).displayStyle { 
    // 'as Any' to suppress warnings ... 
    print(displayStyle) // optional 
} 
+0

謝謝你。我錯過了一個晶須:-) – prabodhprakash

+1

@prabodhprakash你可能已經在另外兩個鬍鬚中自己絆倒它:)高興地幫助 – dfri

-3

你可以用這種方式檢查;

if let randomClass = controlClass as? RandomClass { 
    /* Codes */ 
} 

你可以這樣理解你的變量是哪一類的。

+2

他想了解結構,而不是類本身的類型。 –