将Firebase值发送到文本字段

我有一个视图控制器与三个文本字段。 当用户第一次使用该应用程序时,他们在这些文本字段中input一些信息,然后按完成,然后将信息发送到Firebase数据库:

FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).setValue(saveObject) 

但是,用户也可以编辑这三个文本字段。 截至目前,当用户编辑一个文本字段,并点击完成。 未编辑的文本字段的信息显示在其自己的文本字段中,然后用户必须再次单击完成button才能将编辑的文本字段发送到Firebase:

  if City.text=="" { FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in if let postsDictionary = snapshot .value as? [String: AnyObject] { let city = postsDictionary["City"] as? String ?? "" self.City.text = city }}) } if Major.text=="" { FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in if let postsDictionary = snapshot .value as? [String: AnyObject] { let major = postsDictionary["Major"] as? String ?? "" self.Major.text = major }}) } if College.text=="" { FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in if let postsDictionary = snapshot .value as? [String: AnyObject] { let college = postsDictionary["College"] as? String ?? "" self.College.text = college }}) } if College.text=="" || Major.text=="" || City.text=="" { FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in }) }else{ if let City = City.text{ if let Major = Major.text{ if let College = College.text{ let saveObject: Dictionary<String, Any> = [ "uid": uid, "City" : City, "Major" : Major, "College" : College ] FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).setValue(saveObject) 

我不认为这是非常用户友好的,我希望用户编辑他们想要的任何文本字段,我不希望非编辑文本字段值出现在他们的文本字段,我希望用户点击在完成button上一次为新编辑的文本字段值发送到firebase。

只需在viewdidload中创build这个func。 这将加载您的当前属性在firebase。 您应该采用UITextFieldDelegate并添加函数textDidBegin,然后您可以使textField(发件人为!t​​extField类)为空,而不是具有这些加载的属性。

  func reloadFirDatabase() { FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in if let postsDictionary = snapshot .value as? [String: AnyObject] { let city = postsDictionary["City"] as? String ?? "" let major = postsDictionary["Major"] as? String ?? "" let college = postsDictionary["College"] as? String ?? "" if City.text.isEmpty { self.City.text = city { if Major.text.isEmpty { self.Major.text = major } if College.text.isEmpty { self.College.text = college } }}) } 

当你按下完成,你仍然应该加载:

 if let City = City.text{ if let Major = Major.text{ if let College = College.text{ let saveObject: Dictionary<String, Any> = [ "uid": uid, "City" : City, "Major" : Major, "College" : College ] FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).setValue(saveObject) 

我可以保证你这样做,你只需要按一次完成button。