2017-02-24 66 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 –

相关问题