【发布时间】:2017-06-17 19:08:38
【问题描述】:
我有一个带有三个文本字段的视图控制器。当用户第一次使用该应用程序时,他们在这些文本字段中输入一些信息并按完成,然后信息将进入 Firebase 数据库:
FIRDatabase.database().reference().child("info").child(self.loggedInUser!.uid).setValue(saveObject)
但是,用户也可以编辑这三个文本字段。截至目前,当用户编辑一个文本字段并单击完成时。未编辑的文本字段的信息出现在他们自己的文本字段中,然后用户必须再次单击完成按钮才能将已编辑的文本字段发送到 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)
我不认为这对用户很友好,我希望用户编辑他们想要的任何文本字段,我不希望未编辑的文本字段值出现在他们的文本字段中,我希望用户单击一次完成按钮,将新编辑的文本字段值发送到 Firebase。
【问题讨论】:
-
是的,所以当新用户第一次在三个文本字段中输入信息时,它会进入 Firebase。如果用户决定只编辑一个或两个文本字段,那么只有那些文本字段应该在 firebase 中更改,未编辑的字段应该在 firebase @AaronZhengspan> 中保持不变
-
@AaronZheng 非常感谢
-
如果城市字段为空(未编辑),我不希望它用空值替换 firebase 中已经存在的值
-
@AaronZheng 是的
-
@AaronZheng 过去的 cmets 是什么?是的,它有效。当我编辑文本字段并单击完成时,未编辑的文本字段将使用 firebase 中的值进行更新,然后我必须再次单击完成以使已编辑的文本字段在 firebase 中得到更新。我至少想点击一次将编辑后的文本字段发送到 firebase
标签: ios swift firebase-realtime-database uitextfield