Parse和Swift的一个密钥上的两个查询约束

时间:2014-12-02 16:01:49

标签: ios database swift parse-platform ios8

伙计们,我正在尝试获取其用户名未包含在数组中的所有PFUser(dontShowUsers。我还想使用变量name来限制查询,该变量将获取所有用户的用户名等于用户搜索的名称。但是当我这样做时:

findUsers.whereKey("username",containsString:name)
findUsers.whereKey("username",notContainedIn:dontShowUsers)

每个用户都会显示。它会对这两个查询进行检查,并将它们相加。我想用第二个whereKey约束第一个whereKey。什么是最好的方法呢?

2 个答案:

答案 0 :(得分:1)

这是一种方式

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)

注意我必须从解析中复制我的用户[“rejected”]数组 然后我用+来创建“ignoredUsers”

然后我可以使用:

query.whereKey(“username”,notContainedIn:ignoredUsers)

答案 1 :(得分:0)

我想说你可以在不使用2个约束的情况下解决这个问题,就在执行查询之前,检查 name 是否在数组中,如果不是,只需执行查询。