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

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

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

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

Swift

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

Q&A

解決済

1回答

466閲覧

swift firebase リアルタイムデータベースで値の取得をしたい

pokerStars

総合スコア67

Firebase

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

Swift

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

0グッド

0クリップ

投稿2019/02/13 04:24

編集2019/02/13 06:39

イメージ説明

firebaseのリアルタイムデータベースを使って値の保存を行なったのですが、値の取り出し方がわかりません。

どのようにすれば値を取得することができるのでしょうか?

class userViewController: UIViewController { @IBOutlet weak var name: UILabel! @IBOutlet weak var age: UILabel! @IBOutlet weak var job: UILabel! let ref = Database.database().reference() override func viewDidLoad() { super.viewDidLoad() let userID = Auth.auth().currentUser?.uid ref.child("users").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in // Get user value let value = snapshot.value as? NSDictionary let username = value?["名前"] as? String ?? "" self.name.text = username // ... }) { (error) in print(error.localizedDescription) } // Do any additional setup after loading the view. }

イメージ説明

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

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

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

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

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

takabosoft

2019/02/13 05:11

うまく行かないとはどういう意味ですか?with:ブロックの中に制御は到達しているのでしょうか?それともerrorが出力されているですか?
pokerStars

2019/02/13 05:48

回答ありがとうございます! Argument passed to call that takes no arguments このようなエラーになってしまいます。
pokerStars

2019/02/13 05:50

そもそも取り出し方がおかしいのでしょうか?
takabosoft

2019/02/13 06:14

User型の定義はどうなっていますか?自作のクラスか何かですよね?
takabosoft

2019/02/13 06:19

というかlet user = User(username: "名前")の行は要るんですかね?let usernameにsaが入っているのでしたらちゃんと値が取れてるという事になりそうですが。
pokerStars

2019/02/13 06:41

なるほどです! 上記コードなど編集しました! let user = User(username: "名前")を消してみて、label.textに代入してみたのですが、文字が消えてしまいます。 おそらく、 let username = value?["名前"] as? String ?? "" がおかしいと思うのですが、不自然な点はありますでしょうか?
takabosoft

2019/02/13 06:46

firebase使ったことがないので正解はわからないのですが、print(value)で辞書をまるごと出力してみるとコンソールにどう出ますか?
pokerStars

2019/02/13 06:54

No theme registered with id=0 nil このようになります。
takabosoft

2019/02/13 07:10

んー、では ref.child("users").child(userID!).observeSingleEvent を ref.observeSingleEvent に変えて、 print("value=\(value)") とすると、何が出ますか?
takabosoft

2019/02/13 07:20

ひょっとしてref.child("users")のusersの頭文字が大文字じゃないと駄目とか・・・
pokerStars

2019/02/13 07:21

Users = { 4HTj10RR6FMZ32JxDXfLHlUOElA2 = { "\U540d\U524d" = ss; "\U5e74\U9f62" = 21; "\U8077\U6b74" = "\U5927\U5b66\U751f"; }; CBGw6Z8dLsOtA2ETYdooT8ZiOXV2 = { "\U540d\U524d" = "\U6d45\U7530"; "\U5e74\U9f62" = 23; "\U8077\U6b74" = "\U5927\U5b66\U751f"; }; このようになりました!
takabosoft

2019/02/13 07:23

やっぱりref.child("Users")じゃないですか?
pokerStars

2019/02/13 07:25

Usersに大文字にしたら出力できました笑 本当にありがとうございます!!
guest

回答1

0

ベストアンサー

ref.child("users").child(userID!)

ref.child("Users").child(userID!)

にしてください!

投稿2019/02/13 07:26

takabosoft

総合スコア8356

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問