事前にFirebase RealTimeDataBaseにアップロードしてあるデータ群から個別のデータを取得したい。
cocoaPodsでアプリにFirebaseのFrameWork等のインストールはできます。
エクセル上のデータをCSVファイルで出力したものをCSV→JSONファイルに変換し、firebase のrealtaime Databaseにアップロードしました。
このデータ群からuserの番号とツリーの名前が一致した時にデータの取得を許可したいです。
例えばアプリから名前と番号を入力する時、画像で言えば井田さんは自分の登録番号が「37」なので自分の名前「井田」と番号「37」を入力する。
それぞれtextFieldに入力した時、名前以外のデータを返すようにしたいのですが、うまく参考文献を探すことができずに行き詰まっています。
どなたか力を貸していただけないでしょうか?
Xcode 10.3
swift 5.0.1
macOS Mojave 10.14.5
追記
上記より学習を進め
import UIKit
import Firebase
class ViewController: UIViewController {
@IBOutlet weak var inputIdnumber: UITextField! @IBOutlet weak var displayNum: UILabel! @IBOutlet weak var displayPoint: UILabel! @IBOutlet weak var displayName: UILabel! @IBOutlet weak var displayPtNum: UILabel! @IBOutlet weak var displayPrize: UILabel! @IBOutlet weak var displayPrize2: UILabel! @IBOutlet weak var displayPrizenum: UILabel! @IBOutlet weak var displayPrize2num: UILabel! // インスタンス変数 var DBRef:DatabaseReference! override func viewDidLoad() { super.viewDidLoad() //インスタンスを作成 DBRef = Database.database().reference() Database.database().reference().child("user").child("37").observeSingleEvent(of: .value, with:{(snapshot) in if let data = snapshot.value as? [String:AnyObject]{ let name = data["name"] as? String let ptnow = data["ptnow"] as? String let ptnum = data["ptnum"] as? String let prize = data["prize"] as? String let prize2 = data["prize2"] as? String let prizenum = data["prizenum"] as? String let prize2num = data["prize2num"] as? String print(name!) print(ptnow!) self.displayPoint.text = ptnow self.displayName.text = name self.displayNum.text = ptnum self.displayPrize.text = prize self.displayPrize2.text = prize2 self.displayPrizenum.text = prizenum self.displayPrize2num.text = prize2num } }, withCancel: nil)
}
}
のようなコードを元に「37」番の井田さんのデータを取り出すことができました。
Database.database().reference().child("user").child("37").observeSingleEvent(of: .value, with:{(snapshot) in
これは参照したい場所を最初から指定しているので当然と言えば当然なのです。
それでchild("37")⇦の中をtextfieldで入力した数字にしたいのですがうまくいきません。
viewDidLoadの下に
let inputIdNumber = inputIdnumber.textと
そして
child("37")→child(inputIdNumber!)と書き換えてみました
シミュレータにかけると
signal SIGABRTエラーが出てしまいます。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/19 06:41