我在整个函数中都设置了断点,一切运行正常,但是当涉及到打印部分时,它总是跳过它。
func testForGettingAllValues(){
let uid = user2?.id
let ref = FIRDatabase.database().reference().child("user-reviews").child(uid!)
ref.observe(.childAdded, with: {(firstSnapshot) in
let reviewId = firstSnapshot.key
let messageReference = FIRDatabase.database().reference().child("reviews").child(reviewId)
messageReference.queryOrdered(byChild: "ratingNumber").observeSingleEvent(of: .value, with: {(reviewSnapshot) in
if reviewSnapshot.exists(){
if let values = reviewSnapshot.value as? [String:AnyObject]{
for reviews in values {
if let ratingNumber = reviews.value["ratingNumber"] as? String{
print("This is the ratingNumber list", ratingNumber)
}
}
}
}
})
})
}}
发布于 2017-02-25 19:54:46
在你的裙带关系中,有以下几点:
values成功,则为[String:AnyObject]类型。reviews实例都是(key: String, value: AnyObject)类型的命名元组。ratingNumber时,您将访问reviews的value属性,并将此value属性视为字典本身。然而,它不是,它是类型AnyObject。最有可能的是,在上面的第三个项目中,存在逻辑错误,从而导致最内部的可选绑定失败。编译器无法知道reviews.value访问的reviews.value实例实际上是否正在包装字典(可能是NSDictionary?)。您可以尝试首先尝试将其转换为您认为是的字典类型,然后尝试访问转换值的"ratingNumber"键。
可能(由于您缺乏可复制的示例,没有机会亲自测试此示例):
if let ratingNumber = (reviews.value as? [String: String])?["ratingNumber"]https://stackoverflow.com/questions/42460852
复制相似问题