2017-02-27 55 views
0
let message = JSON((userInfo["aps"]?["alert"])!).stringValue 

當我嘗試建立我得到「類型‘任何’沒有標會員」類型「任何」無標會員斯威夫特3

嘗試轉換斯威夫特3,但似乎無法來解決這個錯誤。

+1

什麼類型是'userInfo'? –

+0

它是[AnyHashable:Any] –

+0

和JSON構造函數需要一個字符串? –

回答

1

一個替代的解決方案,以Frankies答案是這樣oneliner:

let message = (userInfo["aps"] as? [AnyHashable: Any])?["alert"] as? String ?? "" 

在你有消息或空字符串結束時,如果沒有消息(或者如果JSON結構是不是你所期望的)...

+0

非常好。這工作,感謝解釋! –

+0

很高興我可以幫助 - 不客氣:) –

1

編譯器不知道userInfo["aps"]是什麼類型。所以它假設它是Any

你不能調用下標,即["alert"]Any。所以它抱怨。

您需要將其解包爲可散列的東西。一個例子:

if let dict = userInfo["aps"] as? [String : AnyObject] { 
    let message = dict["alert"] 
} 
+0

您可以將'let message ...'添加到if語句中,並將它們一起解包 – Alexander

+0

@Alexander當然,您可以做很多事情。這是OP開始使用Swift類型轉換的簡單示例。 – Frankie