質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

224閲覧

Firebaseから取得した値を辞書に追加したい

ttah

総合スコア35

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/03/17 07:28

編集2019/03/17 13:58

現在firebaseから取得した値を辞書に追加できません
取得したデータprint(snap)は

Snap (age)
Snap (message) Lllllllll
Snap (name) F5ToMeuE3XbcOZymFKnkwQFUfAq1

snap.value の型は Optional<Any> です

試した事

ref.observeSingleEvent(of: .value, with: { (DataSnapshot) in for item in DataSnapshot.children{ let snap = item as! DataSnapshot let dic = snap.value as! [String : String] ←エラー個所

結果
Could not cast value of type '__NSCFConstantString' (0x110d49760) to 'NSDictionary

となりNSCFConstantString → NSDictionary
が出来ない状態?となっております

公式を見て

ref.observeSingleEvent(of: .value, with: { (DataSnapshot) in let value = DataSnapshot.value as? Dictionary

も試しましたが、エラー(Ambiguous reference to member 'value'
)が出てしまいました

試した事2

ref.observe(.value) {(snap: DataSnapshot)in     var dict = snap.value as! [String:String]

こちらではうまく出来ましたが私は observeSingleEvent を使いたいので
observeSingleEventを使ってデータを辞書に追加する方法をご教授お願いします
また初心者の為やり方だけを教わってもコードに反映させる事が出来ずにお手数をかけてしまう恐れがあるので正解のコードがあると助かります。

追記
現在データは

let ref = Database.database().reference() ref.child(use).child(user1).child(userid!).setValue(data)

で保存していますが、
データ取得をchild(userid!)を除いた
ref.child(use).child(user1).observeSingleEvent(of: .value, with: { (DataSnapshot) in
で行えば辞書に追記できました。しかし私はref.child(use).child(user1).child(userid!).observeSingleEvent(of: .value, with: { (DataSnapshot) in
で取得したい状態です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

for-inで回さないで。

投稿2019/03/18 08:16

MasakiHori

総合スコア3384

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttah

2019/03/18 09:37

有難うございます 解決出来ました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問