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

スウィフト何の添字のメンバーを持っていませんが、解決に見えることはできませんこのエラー。タイプ「どれが」私は「タイプ 『どれが』は添字メンバーがありません」スウィフト3に変換しようと</p> <p>を取得する建物私がしようとすると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の簡単な例でした。 – Frankie

関連する問題