Firebaseに新規データ追加できない
下記のコードでFirebase RealTimeDataBaseにデータを追加したいと考えております。
2にあたる部分の名前をsendtxの値にして、
sendtxとsendtx1をtext1,text2として、
登録したいと考えております。
しかし、下記のコードで実行しましたが、
データが望む通りに新規登録されませんでした。
どのように記述すれば良いかわかりません。
ご教授のほど、何卒よろしくお願いいたします。
データの構造図は下記の通りです。
また、コードは次の通りです。
import UIKit
import Firebase
import NVActivityIndicatorView
class ViewController2: UIViewController, UITextFieldDelegate {
@IBOutlet weak var sendtx: UITextField!
@IBOutlet weak var sendtx1: UITextField!
@IBOutlet weak var indicator_1: NVActivityIndicatorView!
@IBAction func theButton(sender: UIButton) {
var sendarray:[Dictionary<String,String>] = []
var sendtextArray = ["text1":sendtx.text!,"text2":sendtx1.text!]
sendtx1.text = ""
sendtx.text = ""
addData(text: sendtextArray)
}
// データベースへの参照
let rootRef = Database.database().reference()
var ref: DatabaseReference!
// データベースへの参照
var receiveData: String = ""
var receiveData2: String = ""
override func viewDidLoad() {
super.viewDidLoad()
sendtx1.delegate = self
sendtx.delegate = self
// Do any additional setup after loading the view.
}
//フィールドをタッチした時に、キーボードを閉じる
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
sendtx1.resignFirstResponder()
sendtx.resignFirstResponder()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
//値を登録する
func addData(text : Any){
//delegate
sendtx1.delegate = self
sendtx.delegate = self
//ここの1行を追加
indicator_1.startAnimating()
// データベースへの参照
let rootRef = Database.database().reference()
//値を追加する階層を設定
let tittle1: String = sendtx.text!
//ランダムの数を発生
let num = arc4random() % 10
//この部分でうまく代入されない!!
let conditionRef = rootRef.child("TestApp/\(tittle1)/\(num)\(tittle1)")
print(conditionRef)
//値を追加
conditionRef.setValue(text)
}
// //参考までに記載
// func textFieldShouldReturn(textField: UITextField) -> Bool{
//
// let sendData = ["send1": sendtx.text!, "send2": sendtx1.text!]
// ref.childByAutoId().setValue(sendData)
//
// textField.resignFirstResponder()
// sendtx.text = ""
// sendtx1.text = ""
//
// return true
// }
//
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// 子ノード condition への参照
let conditionRef = rootRef.child("condition")
// クラウド上で、ノード condition に変更があった場合のコールバック処理
conditionRef.observe(.value) { (snap: DataSnapshot) in
print("ノードの値が変わりました!: \((snap.value as AnyObject).description)")
}
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}