我有一个FialBaseTable,我需要找出一个属性是否存在于特定用户的表中。表的结构如下:

Users
-Lf9xUh53VeL4OLlwqQo
   username: "[email protected]"
   price:    "$100"
   special:  "No"

-L12345ff322223345fd
   username: "[email protected]"
   special:  "No"

我需要知道“价格”是否是为特定用户添加的。好像想不出那个!
在斯威夫特,我需要这样的东西:
        self.ref?.child("Users").queryOrdered(byChild: "username").queryEqual(toValue: username.text!).observe(.value, with: { (snapShot) in
        if (snapShot.value! is NSNull) {
            print("nothing found")
        } else {
            print("found it!")
            print(snapShot)

            let snapShotValue = snapShot.value as! [String:[String:Any]]
                Array(snapShotValue.values).forEach { // error here if it doesn't exist
                let price = $0["price"] as! String
                self.userPrice.text = price
            }}
        })

但是如果价格不存在,我会出错。谢谢你的帮助。

最佳答案

使用as?而不是as!

if let price = $0["price"] as? String {
  print(price)
}
else {
   print("No price")
}

或者很快
self.userPrice.text = ($0["price"] as? String) ?? "No price"

关于swift - 如何找出用户表中是否有属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56486253/

10-16 20:50