2016-12-20 66 views
0

我想用三个条件来筛选火力地堡查询结果:无法转换int类型的值与预期的参数类型布尔

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变量定义为视图控制器类中的一个全局变量:

var dataFilter = 0

+0

比较与'做'==,而不是与'=' –

+0

如果我将其更改为'==',我会收到错误'Binary operator ==不能应用于NSNumber类型的操作数?和Int' – winston

+0

尝试'(post?.isGlobal.intValue ?? 0)=='或者在访问它的isGlobal intValue属性之前打开你的可选文章 –

回答

1

您只需解开您可选的后并访问其isGlobal的intValue财产,NSNumber的有返回的intValue财产一个Int,你可以比较你的dataFilter(Int)值。或者使用'??'无合并打开您的可选绑定,并同时提供默认值为零的情况下。

所以,如果你解开你的帖子对象:

post.isGlobal.intValue == dataFilter 

或者使用可选的招标与无合并运算符:

(post?.isGlobal.intValue ?? 0) == dataFilter 
相关问题