得到这个错误歧义使用'文本'

时间:2018-12-27 21:47:43

标签: ios swift firebase firebase-realtime-database

我在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中发生错误

2 个答案:

答案 0 :(得分:2)

您没有提供足够的信息,但是让我们假设您的代码看起来像这样。您有一个出口:

@IBOutlet var plantNameField : UITextField!

然后您说,例如:

let plantId = NSUUID().uuidString
let plant = ["plantName": self.plantNameField.text, "plantId":plantId]

这是非法的,因为self.plantNameField.textplantId具有不同的类型,而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 “密钥”的创建是唯一缺少的部分。