我已經將一個參數傳遞給AnyObject類型的函數,因爲任何東西都可以傳遞給它。有沒有辦法讓動態傳遞的對象的類型?在Swift中動態獲取AnyObject的類型
回答
通常這是仿製藥的。在不與ObjC交互的代碼中使用AnyObject
的原因很少。如果您然後根據類型執行不同的操作,那麼您可能實際上意圖使用重載。
也就是說,有幾種訪問類型的方法。通常,你要根據不同型號運行不同的代碼,所以你可以使用一個switch
:
let x:AnyObject = "asdf"
switch x {
case is String: println("I'm a string")
default: println("I'm not a string")
}
或
let x:AnyObject = "asdf"
switch x {
case let xString as String: println("I'm a string: \(xString)")
default: println("I'm not a string")
}
或者你可以使用一個if:
if let string = x as? String {
println("I'm a string: \(string)")
}
有關更多討論,請參閱Swift編程語言中的「爲Any和AnyObject類型轉換」。
但是,除非您使用ObjC代碼,否則很少有理由使用Any
或AnyObject
。泛型和重載是用於解決Swift中這些問題的工具。
首次進口基金會
,如果你wan't test1的類型做到這一點:
var test1 = "test"
println(_stdlib_getTypeName(test1))
你會得到 「的TTS」 的TTS意味着字符串。
,如果你要做一個誠信嘗試將TTSI(我對於int)
請記住,這些類型的名稱是私人的,隨時可能更改。函數名稱中的前導下劃線是Apple的一個指示器,它是一個內部函數,不打算從stdlib外部調用。 – 2014-08-27 13:52:27
使用未解析的標識符'_stdlib_getTypeName' – Sander 2016-10-20 19:19:32
func testType(value:AnyObject!){
if let v = value as? NSString{
println("NSString")
}else if let v = value as? NSNumber{
println("NSNumber")
}else if let v = value as? Double{
println("Double")
}else if let v = value as? Int{
println("Int")
}
}
請添加一些解釋。 – 2015-07-08 05:52:16
- 1. 無法在swift 2中獲取anyobject類型的值
- 2. Swift - AnyObject []不是AnyObject []的子類型嗎?
- 3. 獲取動態類型的類類型?
- 4. 按類型過濾Swift [AnyObject]數組
- 5. Swift問題:關於AnyObject類型鑄造
- 6. 在Swift中禁用動態類型
- 7. Swift中的NSDictionary:無法下標'AnyObject'類型的值與'Int'類型的索引
- 8. AnyObject和任何在Swift中
- 9. Swift:從類的實例獲取類型
- 10. Swift動態類型初始化與動態協議類型
- 11. 無法在Swift 3中實例化具有泛型類型AnyObject的NSFetchedResultController
- 12. Swift - 加載類動態類型
- 13. Swift:從動態SegmentedControl中獲取值
- 14. 從字典中獲取AnyObject
- 15. 無法將類型'[AnyObject]'的值賦值爲類型'[String]'的值Swift 2
- 16. 動態類型文本獲取剪輯
- 17. 如何獲取動態類型屬性?
- 18. Swift獲取數組的通用類型
- 19. Swift For Loop類型'AnyObject'的值?沒有成員「發電機」
- 20. 不能使用索引類型爲字符串的下標AnyObject類型(Swift)
- 21. Swift在添加對象AnyObject
- 22. 用AnyObject初始化Swift類?來自NSJSONSerialization
- 23. Swift在數據模型中的動態屬性(獲取器/設置器)
- 24. 在Asp.net視圖中獲取動態類型對象
- 25. 在Swift中獲取和設置不同的數據類型
- 26. 如何在Swift中獲取值類型的引用?
- 27. performSegueWithIdentifier - 無法將類型'AnyObject'的值轉換爲參數類型'AnyObject?'
- 28. 在[swift]中將[AnyObject]轉換爲[Int] 3
- 29. 動態獲取實例屬性Swift 3
- 30. 在swift中加載動態類
我會說,這個主題沒有人回答沒有幫助我。我的問題是我無法獲取調試期間的類型信息,要知道如何處理Any對象,看到實際的內容,因爲我不知道任何對象的類型,我不知道我需要哪種類型投它來看內容。 對我來說最好的解決方案是將Any對象轉換爲NSObject,並將它看作className屬性,例如: ((作爲NSObject的[json [「glossary」]] [「title」]作爲NSObject).className 它顯示我「__NSDictionaryM 「,例如: – Pavel 2017-03-14 23:19:12