2015-04-15 92 views
0

解析复合查询我有这个疑问在雨燕1.2

var postsExploreQuery = Post.query() 
postsExploreQuery!.whereKey("isPrivate", equalTo: false) 

var query = PFQuery.orQueryWithSubqueries([postsExploreQuery]) 
query.whereKey("isPublished", equalTo: true) 

return query 

和Xcode中显示我错误

不能援引 'orQueryWithSubqueries' 类型的参数列表 '([PFQuery?])'

什么我'做错了:(

回答

1

你真的应该走出把!所有自选后的习惯。这消除了可选项旨在为您提供的所有安全性。除非它设计得不好,否则你使用的API会返回一个可选的原因。使用if let安全地打开可选件。这消除了您的程序将来会随机崩溃的机会,并且如果程序对您的程序有意义,还可以让您有机会处理错误。

var postsExploreQuery = Post.query() 
if let postsExploreQuery = postsExploreQuery { 
    postsExploreQuery.whereKey("isPrivate", equalTo: false) 

    var query = PFQuery.orQueryWithSubqueries([postsExploreQuery]) 
    query.whereKey("isPublished", equalTo: true) 

    return query 
} 
-1

我的猜测是,orQueryWithSubqueries预计,非自选的数组,所以你可能需要把它写成:

var query = PFQuery.orQueryWithSubqueries([postsExploreQuery!]) 
+0

This Works! tnx –

+0

鼓励人们在每个选项都不太理想之后用'!'胡椒粉代码。 – Lance

+0

@Lance作为一般规则,我完全同意你的观点,我通常不鼓励使用强制解包和隐式解包。在这种情况下,他已经在第二行使用了强制展开算子,所以我根本不会鼓励 - 也考虑到变量是在第一行中初始化的。 – Antonio