Firebaseデータベースにデータを保存することをテストしようとしていますが、何か問題がありました。ここでは、ユーザが送信ボタンを押したときのために、私が持っているコードは次のとおりです。setValueメソッドがFirebaseデータベースに更新されていません
var ref = FIRDatabase.database().reference()
var user = FIRAuth.auth()?.currentUser
@IBOutlet weak var titleEntry: UITextField!
@IBOutlet weak var townAndZip: UITextField!
@IBOutlet weak var pickPrice: UISegmentedControl!
@IBOutlet weak var pickDuration: UISegmentedControl!
@IBAction func tapBackground(sender: AnyObject) {
view.endEditing(true)
}
@IBAction func postTask(sender: AnyObject) {
if ((titleEntry.text?.isEmpty) != nil && (townAndZip.text?.isEmpty) != nil) {
var price:String = pickPrice.titleForSegmentAtIndex(pickPrice.selectedSegmentIndex)!
var duration:String = pickDuration.titleForSegmentAtIndex(pickDuration.selectedSegmentIndex)!
self.ref.setValue(["title": titleEntry.text!])
self.ref.child("tasks").child(user!.uid).setValue(["price": price])
self.ref.child("tasks").child(user!.uid).setValue(["duration": duration])
self.ref.child("tasks").child(user!.uid).setValue(["town_zip": townAndZip.text!])
self.performSegueWithIdentifier("postAdd", sender: self)
print("Posted!")
} else {
let alert = UIAlertController(title: "Error", message: "Please make sure you filled in everything.", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Understood!", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
どんなに私が入力する内容、アプリはセグエを実行していないし、私のFirebaseデータベースに更新されません。また、フィールドのいずれかのデータのみを入力しても、それでもセグを実行し、アラートは表示されません。私はそれがFirebase自体の問題だと思ったが、それはおそらく私が見つけることができない間違いだろう。どんな助けでも大歓迎です。
私はこれが正しいかどうかはわかりませんが、if文はテキストフィールドが空であるかどうかを確認していますか?だからあなたはなぜそれをチェックしているのですか?isEmptyですでにブール値を返すときは= nilですか?それを削除してみてください –
'if!(titleEntry.text?.isEmpty)' –
推測された推測:ユーザーがサインインした後にコードが実行されていますか?そうでない場合、データベースはデフォルトで認証されていないアクセスを拒否するように構成されています。このページの最初の青いメモをご覧ください:https://firebase.google.com/docs/database/ios/save-data –