Ios 使用Parse和Swift在一个键上设置两个查询约束
伙计们,我正在尝试获取用户名未包含在数组中的所有pfuser(Ios 使用Parse和Swift在一个键上设置两个查询约束,ios,database,swift,parse-platform,ios8,Ios,Database,Swift,Parse Platform,Ios8,伙计们,我正在尝试获取用户名未包含在数组中的所有pfuser(dontShowUsers)。我还想使用变量name限制查询,该变量获取用户名等于用户搜索的名称的所有用户。但是,当我这样做时: findUsers.whereKey("username",containsString:name) findUsers.whereKey("username",notContainedIn:dontShowUsers) 每个用户都会显示。它会生成这两个查询,并将它们添加到一起。我想将第一个whereKe
dontShowUsers
)。我还想使用变量name
限制查询,该变量获取用户名等于用户搜索的名称的所有用户。但是,当我这样做时:
findUsers.whereKey("username",containsString:name)
findUsers.whereKey("username",notContainedIn:dontShowUsers)
每个用户都会显示。它会生成这两个查询,并将它们添加到一起。我想将第一个whereKey
与第二个whereKey
约束在一起。实现这一点的最佳方法是什么?这是一种方法
println(geoPoint)
user["location"] = geoPoint
let rejectedUsers: [String] = user["rejected"].copy() as [String]
let acceptedUsers: [String] = user["accepted"].copy() as [String]
let ignoredUsers = rejectedUsers + acceptedUsers
var query = PFUser.query()
query.whereKey("location", nearGeoPoint: geoPoint)
query.whereKey("username", notEqualTo: user.username)
query.whereKey("gender", equalTo: user["interestedIn"])
query.whereKey("username", notContainedIn: ignoredUsers)
query.limit = 10
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]!, error2: NSError!) -> Void in
if error2 != nil {
println(error2)
} else {
if objects.isEmpty {
println("empty query")
} else {
for object in objects {
self.usernames.append(object.username)
self.userImages.append(object["image"] as NSData)
注意,我必须从parse复制我的用户[“拒绝”]数组
然后我用+来创建“ignoredUsers”
然后我可以使用:
query.whereKey(“用户名”,不包含在:ignoredUsers中)我想说,你可以不用使用两个约束来解决这个问题,就在执行查询之前,检查名称是否在数组中,如果不在数组中,就执行查询。检查我已经检查过了,实际上,我不知道如何使用
containsAllObjects实现搜索功能
你能做一个吗查询,然后过滤结果以找到与另一个匹配的结果?或者可以在云代码中执行此操作。或者,如果不显示属性对于用户是一致的,则可以在用户对象中有一个单独的bool列,您可以对其进行查询。