2017-09-06 67 views
-3

我從服務器得到json,我需要將id字段轉換爲swift代碼中的字符串。JSON的數值在swift中串起來?

問題是json有時返回"12345",有時返回12345(帶或不帶引號)。

是否可以在不檢查值類型並檢查轉換結果是否爲nil的情況下解決此問題?

更新代碼

實施例I與檢查轉換結果使用:

let result = (some_index as? String) ?? String(some_index as! Int)

的問題是在目標C你有[NSString stringWithFormat:@"%@", some_object]。但在swift中,你有可選項,它試圖在結果中插入單詞「可選」。

修訂

阻止垃圾郵件有關自選隨機答案。問題是具體 - 「如何簡單地展開可能看起來像String,Int或根本不存在的json值?」

swift How to remove optional String Character

在這個問題上,他們問怎麼Int? -> IntString? -> String和類似的轉換。在我的情況下,我不知道我是否有Int?String?作爲初始類型。

+0

用您當前的相關代碼更新您的問題,並清楚地顯示您需要幫助。 – rmaddy

+0

爲什麼要檢查值類型並檢查轉換是否失敗?如果值不一致是一個String或一個Int,你必須檢查自己,沒有其他不可思議的方式。 – Moritz

+0

你真的想存儲一個字符串或'Int'值嗎?而且,正如其他人已經要求的那樣,請提供更多背景。 –

回答

0

兩個StringInt符合CustomStringConvertible,所以你可以可選值向下轉換CustomStringConvertible和使用字符串插值

let dict : [String:Any] = ["Foo" : 12345] 

if let value = dict["Foo"] as? CustomStringConvertible { 
    let result = "\(value)" 
} 

和指責Web服務的擁有者發送的數據不一致;-)

+0

這似乎是可以使用此答案+可選的類別中的方法 –