我正在尝试使用以下三个条件过滤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
答案 0 :(得分:1)
您可以打开可选帖子并访问其isGlobal intValue属性,NSNumber具有一个intValue属性,该属性返回一个可以与您的dataFilter(Int)值进行比较的Int。或者使用'??' nil合并以展开您的可选绑定,同时在nil的情况下为其提供默认值。
因此,如果您打开帖子对象:
post.isGlobal.intValue == dataFilter
或者使用nil合并运算符的可选biding:
(post?.isGlobal.intValue ?? 0) == dataFilter