[英]How to convert Any to Int in Swift
在宣布我時我收到錯誤
var users = Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])
如何獲得int值?
var i = users[0]["Age"] as Int
正如GoZoner所指出的那樣,如果你不知道這個垮掉的人會成功,請使用:
var i = users[0]["Age"] as? Int
如果失敗,結果將nil
斯威夫特4回答:
if let str = users[0]["Age"] as? String, let i = Int(str) {
// do what you want with i
}
如果您確定結果是Int
那么使用:
var i = users[0]["Age"] as! Int
但是如果你不確定並且想要一個nil
值,如果它不是Int
那么使用:
var i = users[0]["Age"] as? Int
“當您不確定向下轉換是否成功時,請使用類型轉換運算符的可選形式(作為?)。 這種形式的運算符將始終返回一個可選值,如果無法進行向下轉換,則該值將為nil。 這使您可以檢查成功的向下轉發。“
摘錄自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l
if let id = json["productID"] as? String {
self.productID = Int32(id, radix: 10)!
}
這對我有用。 json["productID"]
的類型為Any
。 如果它可以轉換為字符串,則將其轉換為Integer。
這可能以前有效,但它不是Swift 3的答案。只是為了澄清,我沒有Swift 3的答案,下面是我使用上述答案的測試,顯然它不起作用。
我的數據來自NSDictionary
print("subvalue[multi] = \(subvalue["multi"]!)")
print("as Int = \(subvalue["multi"]! as? Int)")
if let multiString = subvalue["multi"] as? String {
print("as String = \(multiString)")
print("as Int = \(Int(multiString)!)")
}
生成的輸出是:
subvalue[multi] = 1
as Int = nil
只是拼出來:
a)原始值是否為Any? 價值是:1
b)轉換為Int結果為零
c)Casting to String導致nil(打印行永不執行)
編輯
答案是使用NSNumber
讓num = subvalue [“multi”]為? 的NSNumber
然后我們可以將數字轉換為整數
讓myint = num.intValue
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.