如何識別Swift中變量的類型。對於例如如果我寫知道Swift中變量的類型
struct RandomStruct....
- 類型應該給我struct
而不是RandomStruct
,或者如果我寫class RandomClass...
的類型應該是class
,而不是RandomClass
。
我一直在使用Mirror.subjectType
和type(of:)
兩者試圖使輸出RandomStruct
和RandomClass
如何識別Swift中變量的類型。對於例如如果我寫知道Swift中變量的類型
struct RandomStruct....
- 類型應該給我struct
而不是RandomStruct
,或者如果我寫class RandomClass...
的類型應該是class
,而不是RandomClass
。
我一直在使用Mirror.subjectType
和type(of:)
兩者試圖使輸出RandomStruct
和RandomClass
你是密切與使用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
}
謝謝你。我錯過了一個晶須:-) – prabodhprakash
@prabodhprakash你可能已經在另外兩個鬍鬚中自己絆倒它:)高興地幫助 – dfri
你可以用這種方式檢查;
if let randomClass = controlClass as? RandomClass {
/* Codes */
}
你可以這樣理解你的變量是哪一類的。
他想了解結構,而不是類本身的類型。 –
你誤解是什麼「類型」的意思。 – Raphael