簡體   English   中英

如何在Swift中將Any轉換為Int

[英]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.

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