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

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

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

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

1654閲覧

Firebase データの読み取り

sam3457

総合スコア52

Firebase

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2018/04/04 14:08

編集2018/04/04 14:09

Firebase RealtimeDatabaseに保存した10個分のposts(画像URL)をダウンロードする処理を書いています。
イメージ説明

以下の様にURLをダウンロードしています。(このメソッドはviewDidLoad内で呼んでいます)

swift

1//RDBにある投稿画像の参照(URL)を取ってくる 2 func loadAllData() { 3 4 let RDBRef = Database.database().reference().child("posts") 5 RDBRef.queryLimited(toLast: 10).observe(.value) { (snapshot,error) in 6 let valueDic = snapshot.value as! [String : Any] 7 let postStr = valueDic["postimage"] as? String 8 let postUrl = URL(string: postStr!) 9 self.posts.append(postUrl!) 10 11 } 12 13 }

起動して上の処理に差し掛かると以下の様なエラーが出ます。
イメージ説明

RDBには値が存在しているのにpostStrがnilになっているというのは

let RDBRef = Database.database().reference().child("posts")
RDBRef.queryLimited(toLast: 10).observe(.value) { (snapshot,error) in  }

でデータ階層の指定(?)の仕方が間違っているということでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

iOS でのデータリストの処理 > value イベントのリッスン

swift

1_commentsRef.observe(.value) { snapshot in 2 for child in snapshot.children { 3 ... 4 } 5}

というわけなので,2行目for〜が抜けているのがまずいと思います.

投稿2018/04/04 15:42

Yatima

総合スコア1159

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

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

sam3457

2018/04/05 05:37

回答ありがとうございます! 複数データの取得はfor文が必要になるのですね! let RDBRef = Database.database().reference().child("posts") RDBRef.queryLimited(toLast: 10).observe(DataEventType.childAdded, with: { (snapshot) in var tempPosts = [NSDictionary]() for post in(snapshot.children) { let child = post as! DataSnapshot let dict = child.value tempPosts.append(dict as! NSDictionary) } self.posts = tempPosts }) この様に記述してみたところエラーが消えました。ありがとうございますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問