2017-02-24 82 views
0

應用配置已完成。Firebase:儘管我正在設置數據,但值並沒有真實反映Firebase的實時數據庫

用於數據的基礎上

規則被設定爲

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


//declaration 
var userDB: FIRDatabaseReference! 

在viewDidLoad中()

userDB = FIRDatabase.database().reference() 
//for reference database 

動作方法是像下面

@IBAction func next(_ sender: Any) { 
     guard fullname.text != "",email.text != "",password.text != "" ,confirmPassword.text != "" else { 
      return 
     } 
     if(password.text == confirmPassword.text) 
     { 
      FIRAuth.auth()?.createUser(withEmail: email.text!, password: password.text!, completion: { (user, error) in 
       if let error = error { 
        print(error.localizedDescription) 
       } 
       if let error = error { 
        print(error.localizedDescription) 
       } 

       if let user = user { 
        print(user.uid) 
        let changeRequest = FIRAuth.auth()!.currentUser!.profileChangeRequest() 
        changeRequest.displayName = self.fullname.text! 
        changeRequest.commitChanges(completion: nil) 

        let imageRef = self.userStorage.child("\(user.uid).jpg") 

        let data = UIImageJPEGRepresentation(self.uploadPictureImageview.image!, 0.5) 

        let uploadTask = imageRef.put(data!, metadata: nil, completion: { (metadata, err) in 
         if err != nil { 
          print(err!.localizedDescription) 
         } 

         imageRef.downloadURL(completion: { (url, er) in 
          if er != nil { 
           print(er!.localizedDescription) 
          } 

          print(url) 
          if let url = url { 
           print(url) 
           let userInfo: [String : String] = ["uid" : user.uid, 
                   "full name" : self.fullname.text!, 
                   "urlToImage" : url.absoluteString] 

           self.userDB.child("users").child(user.uid).setValue(userInfo) 


           let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "usersVC") 

           self.present(vc, animated: true, completion: nil) 

          } 

         }) 

        }) 

        uploadTask.resume() 

       } 

      }) 
     } 
     else{ 
      print("Password didnot match") 
     } 
    } 

字典類型已經改變從[String:Any]到[String:String]

數據未保存在Firebase的實時數據庫中。我忘了什麼嗎?

+0

你認證嗎? –

+0

yea @AndriySavran 存儲正在更新生動 –

+0

他已經制定了Firebase規則,以至於他甚至不必認證用戶。你有沒有嘗試將你的userInfo字典更改爲'let userInfo:[String:String] = ...'?你肯定'self.fullname.text!'有價值嗎?您是否還從Firebase項目下載了GoogleService-Info.plist文件並將其添加到您的Xcode項目中? – MikeG

回答

0

打開到火力地堡參考連接正確的方法是這樣的...

//declare the reference as an implicitly unwrapped optional 
var userDB: FIRDatabaseReference! 

//set the value of the reference in viewDidLoad 
override func viewDidLoad(){ 
    userDB = FIRDatabase().database().reference() 
} 

如果你還在做什麼我上面顯示後有同樣的問題,那麼也許你忘了從火力地堡項目下載GoogleService-Info.plist文件並將其添加到您的Xcode項目

還要確保self.fullname.text!有一個值,否則它不會因爲火力地堡工作不會拿nil

編輯

也在您的AppDelegate.swift文件中,檢查以確保您撥打FIRApp.configure()。我相信你可以稱之爲didFinishLaunchingWithOptions或者你可以做..

override init(){ 
    FIRApp.configure() 
} 
+0

我已完成所有驗證@MikeG並添加了GoogleService-info.plist。我可以將我的圖像存儲在Firebase存儲中。 –

+0

好吧如何嘗試一些非常簡單的事情,看看它是否有效。在'viewDidLoad()'試着寫一些東西到像''userDB.child(「users」)。setValue(「TESTING」)'看看它是否有效 – MikeG

+0

嘿夥計...在這裏工作。什麼可能是我的錯誤@MikeG –

相關問題