首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的打印语句不被执行?

为什么我的打印语句不被执行?
EN

Stack Overflow用户
提问于 2017-02-25 19:50:27
回答 1查看 63关注 0票数 0

我在整个函数中都设置了断点,一切运行正常,但是当涉及到打印部分时,它总是跳过它。

代码语言:javascript
复制
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)
                        }
                    }
                }
            }
        })

    })
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-25 19:54:46

在你的裙带关系中,有以下几点:

  • 如果绑定到values成功,则为[String:AnyObject]类型。
  • 每个reviews实例都是(key: String, value: AnyObject)类型的命名元组。
  • 当您尝试绑定到ratingNumber时,您将访问reviewsvalue属性,并将此value属性视为字典本身。然而,它不是,它是类型AnyObject

最有可能的是,在上面的第三个项目中,存在逻辑错误,从而导致最内部的可选绑定失败。编译器无法知道reviews.value访问的reviews.value实例实际上是否正在包装字典(可能是NSDictionary?)。您可以尝试首先尝试将其转换为您认为是的字典类型,然后尝试访问转换值的"ratingNumber"键。

可能(由于您缺乏可复制的示例,没有机会亲自测试此示例):

代码语言:javascript
复制
if let ratingNumber = (reviews.value as? [String: String])?["ratingNumber"]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42460852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档