我在firebase db中创建了plants实体,我想为某些功能添加另一个值“ plantId”。为此,我创建了一个随机的字符串ID,并将其传递给要保存在db中的工厂对象,但是却出现了“文本的歧义使用”错误。我进行了很多搜索,但找不到任何解决方案。请在下面检查我的代码:
let plantId = NSUUID().uuidString
let plant = ["plantName": self.plantNameField.text, "plantType": self.plantTypeField.text, "plantLocation": self.plantLocationField.text,"userId": userID, "plantImageURL": plantImageURL, "plantId": plantId]
let childUpdates = ["/plants/\(key)": plant]
self.ref.updateChildValues(childUpdates)
在上面的代码行2中发生错误
答案 0 :(得分:2)
您没有提供足够的信息,但是让我们假设您的代码看起来像这样。您有一个出口:
@IBOutlet var plantNameField : UITextField!
然后您说,例如:
let plantId = NSUUID().uuidString
let plant = ["plantName": self.plantNameField.text, "plantId":plantId]
这是非法的,因为self.plantNameField.text
和plantId
具有不同的类型,而Swift中的字典必须具有相同类型的值。要解决此问题,您会说:
let plant = ["plantName": self.plantNameField.text!, "plantId":plantId]
(请注意感叹号。)
同样,对于字典中的其他text
个条目。
但是,当然,此答案取决于plantNameField
确实是UITextField的猜测;您没有显示足够的代码让我知道那是真的。
答案 1 :(得分:1)
我认为您缺少“密钥”的创建
let key = ref.child("posts").childByAutoId().key
let post = ["uid": userID,
"author": username,
"title": title,
"body": body]
let childUpdates = ["/posts/\(key)": post,
"/user-posts/\(userID)/\(key)/": post]
ref.updateChildValues(childUpdates)
也许您已经做过,但是请看一下。 https://firebase.google.com/docs/database/ios/read-and-write “密钥”的创建是唯一缺少的部分。