snapshot.value
はAny
の種類があります。添え字は、値を中括弧で囲む構文を使用する特別な種類の関数です。この添字関数はDictionary
によって実装されています。
ここでは、開発者としてsnapshot.value
がDictionary
であることを知っていますが、コンパイラは認識していません。 Any
とAny
の値で呼び出すため、subscript
が実装されていないため、subscript
関数を呼び出せません。これを行うには、snapshot.value
が実際にDictionary
であることをコンパイラーに伝える必要があります。さらにDictionary
は、Dictionary
のキーがどんなタイプの値でも添字関数を使用できるようにします。だからDictionary
キーがString
(AKA [String: Any]
)であることを伝える必要があります。それよりもさらに進んでいる場合は、Dictionary
のすべての値がString
であることを知っているようですので、String
に添え字の後に各値をキャストする代わりに、 String
タイプ(AKA [String: String]
)のキーと値がある場合、値にアクセスするためにサブスクリプトすることができ、コンパイラは値がString
であることも知っています!
guard let snapshotDict = snapshot.value as? [String: String] else {
// Do something to handle the error
// if your snapshot.value isn't the type you thought it was going to be.
}
let employerName = snapshotDict["employerName"]
let employerImage = snapshotDict["employerImage"]
let uid = snapshotDict["fid"]
あなたはそれを持っています!
スナップショットはどのように宣言されていますか?それはfirebaseに関連していますか?あなたはそれをここに掲示する前にあなたの答えを探しましたか? –
こんにちは。はい - Firebaseとはい私はここで答えを見直しました。おそらく私は答えを間違って統合していますか?私が言ったように、私はかなり新しいです。特定の回答に対する助言や提案は非常に高く評価されます。 – mw1016
[swift 3:Type 'Any?]の可能な複製下付き文字のメンバーはありません](http://stackoverflow.com/questions/39549107/swift-3-type-any-has-no-subscript-members) – FelixSFD