【发布时间】:2016-12-20 03:08:03
【问题描述】:
我正在尝试使用三个条件过滤 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
【问题讨论】:
-
比较是用
==,而不是= -
如果我把它改成
==我得到错误Binary operator == cannot be applied to operands of type NSNumber? and Int -
尝试
(post?.isGlobal.intValue ?? 0) ==或在访问其 isGlobal intValue 属性之前打开您的可选帖子 -
谢谢利奥!那行得通。那做了什么?是否将其转换为 Int,然后如果找不到该值则将其设置为 0?
标签: ios swift firebase swift3 firebase-realtime-database