swiftとFirebaseの学習の一環として、登録してあるユーザーの情報から、メールアドレスでユーザーを検索するというような機能を作っています。
以下のようにコードを書いたのですが、DataSnapshotの値がログに表示されません。
表示されるのはSnap (users) <null>です。
どのように記述すれば、データを取得できるでしょうか?
またデータの取得方法を調べましたが、こちらのように取得したデータを変数に入れて扱う方法と、自分のコードのようにobserveを使ってやる方法の二つの方法が見つかりました。どちらを採用するべきなのでしょうか?
ご指導よろしくお願いいたします。
データを登録する画面のコード
swift
1// 2// ViewController.swift 3// FirebasePractice 4// 5// Created by xxxxx on 2020/06/08. 6// Copyright © 2020 Kyoya Matsuyama. All rights reserved. 7// 8 9import UIKit 10import Firebase 11 12class ViewController: UIViewController { 13 14 @IBOutlet weak var usernameTexiField: UITextField! 15 @IBOutlet weak var mailTextField: UITextField! 16 @IBOutlet weak var passwordTextField: UITextField! 17 18 override func viewDidLoad() { 19 super.viewDidLoad() 20 // Do any additional setup after loading the view. 21 } 22 let userDB = Database.database().reference().child("users") 23 24 func register(){ 25 let username = usernameTexiField.text 26 let email = mailTextField.text 27 let password = passwordTextField.text 28 29 var Info = ["name":username!,"email":email!,"password":password!] 30 31 userDB.setValue(Info) 32 33 34 } 35 36 @IBAction func touroku(_ sender: Any) { 37 register() 38 performSegue(withIdentifier: "next", sender: nil) 39 } 40 41} 42 43
メールアドレスを検索する画面のコード
Swift
1// 2// SearchViewController.swift 3// FirebasePractice 4// 5// Created by xxxxx on 2020/06/08. 6// Copyright © 2020 Kyoya Matsuyama. All rights reserved. 7// 8 9import UIKit 10import Firebase 11 12class SearchViewController: UIViewController { 13 14 var userName = String() 15 @IBOutlet weak var searchTextField: UITextField! 16 17 override func viewDidLoad() { 18 super.viewDidLoad() 19 20 21 } 22 23 func search(){ 24 25 let string = searchTextField.text! 26 print(string) 27 let ref = Database.database().reference().child("users") 28 print(ref) 29 ref.queryEqual(toValue: string, childKey: "email").observe(.value) { (DataSnapshot) in 30 print(DataSnapshot) 31 } 32 33 34 35 36 } 37 38 39 @IBAction func send(_ sender: Any) { 40 search() 41 performSegue(withIdentifier: "search", sender: nil) 42 } 43 44 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 45 let resultVC = segue.destination as! ResultViewController 46 resultVC.label = self.userName 47 48 } 49 50 /* 51 // MARK: - Navigation 52 53 // In a storyboard-based application, you will often want to do a little preparation before navigation 54 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 55 // Get the new view controller using segue.destination. 56 // Pass the selected object to the new view controller. 57 } 58 */ 59 60}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/08 22:38
2020/06/08 22:54 編集
2020/06/08 22:59
2020/06/08 23:16
2020/06/08 23:29
2020/06/08 23:34
2020/06/09 01:59