2016-06-21 5 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) 
    } 

이 아무리 입력 무엇 앱이 SEGUE을 수행하지 내 중포 기지 데이터베이스에 업데이트하지 않습니다 다음은 사용자가 전송 버튼을 누를 때에 내가 가지고있는 코드입니다. 또한 필드 중 하나에 대해서만 데이터를 입력해도 계속 segue를 수행하고 경고를 표시하지 않습니다. 나는 Firebase 자체에 문제가 있다고 생각했지만, 아마 찾을 수없는 실수 일 가능성이 높습니다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

나는 이것이 확실하지 않지만 if 문 중 텍스트 필드가 비어 있는지 확인하고 있습니까? 그렇다면 왜 isEmpty에 부울을 반환 할 때 그것을 체크하고 있습니까? 그것을 제거해보십시오 –

+0

'if! (titleEntry.text? .isEmpty) '이어야합니다. –

+0

교육용 추측 : 사용자가 로그인 한 후 코드가 실행되고 있습니까? 그렇지 않은 경우 데이터베이스는 기본적으로 인증되지 않은 액세스를 거부하도록 구성됩니다. 이 페이지의 첫 번째 파란색 메모를 참조하십시오. https://firebase.google.com/docs/database/ios/save-data –

답변

0

"규칙"탭을 확인하려고 했습니까? ("데이터"탭 바로 뒤에 있음).

당신이 허가하지 않은 경우

enter image description here

, 중포 기지는 데이터를 기록 할 수 없습니다. 당신이 할 수있는이

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

에 규칙을 변경하지만 생략하려면 지금부터 앱 사용자에 심지어 허가없이 데이터베이스을 수정할 수 있습니다, 난 당신이 임시 해킹으로 사용하는 것이 좋습니다.

관련 문제