2016-06-21 12 views
0

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自体の問題だと思ったが、それはおそらく私が見つけることができない間違いだろう。どんな助けでも大歓迎です。

+0

私はこれが正しいかどうかはわかりませんが、if文はテキストフィールドが空であるかどうかを確認していますか?だからあなたはなぜそれをチェックしているのですか?isEmptyですでにブール値を返すときは= nilですか?それを削除してみてください –

+0

'if!(titleEntry.text?.isEmpty)' –

+0

推測された推測:ユーザーがサインインした後にコードが実行されていますか?そうでない場合、データベースはデフォルトで認証されていないアクセスを拒否するように構成されています。このページの最初の青いメモをご覧ください:https://firebase.google.com/docs/database/ios/save-data –

答えて

0

[ルール]タブを確認しましたか? (これは「データ」タブの直後です)。

enter image description here

あなたが許可されていない場合は、firebaseは、データを書き込むことができません。することができます。この

{ 
    "rules": { 
    ".read": "true", 
    ".write": "true" 
    } 
} 

にルールを変更しますが、ことを省略する:今から、あなたのアプリのいずれかのユーザーにも、許可なしにデータベースを変更することができ、私はあなたが一時ハックとしてそれを使用することをお勧めします。

関連する問題