无法将Int类型的值转换为期望的参数类型Bool

时间:2016-12-20 03:08:04

标签: ios swift firebase swift3 firebase-realtime-database

我正在尝试使用以下三个条件过滤Firebase查询结果:

let posts = snapshot.childSnapshots.map {
                    Post(snapshot: $0)
                    }.reversed().filter {
                        post?.isGlobal == dataFilter && (self.dependents.contains($0.postedBy) || self.currentUser?.uid == $0.postedBy)
                }

必须满足第一个条件(post.isglobal == datafilter)。然后,当剩下的两个条件中的任何一个满足时,我想进一步过滤帖子。

以上代码返回错误:Binary operator == cannot be applied to operands of type NSNumber? and Int

非常感谢任何帮助。 谢谢!

编辑:dataFilter变量被定义为viewcontroller类中的全局变量:

var dataFilter = 0

1 个答案:

答案 0 :(得分:1)

您可以打开可选帖子并访问其isGlobal intValue属性,NSNumber具有一个intValue属性,该属性返回一个可以与您的dataFilter(Int)值进行比较的Int。或者使用'??' nil合并以展开您的可选绑定,同时在nil的情况下为其提供默认值。

因此,如果您打开帖子对象:

post.isGlobal.intValue == dataFilter

或者使用nil合并运算符的可选biding:

(post?.isGlobal.intValue ?? 0) == dataFilter