Parse查询未包含在关系中

时间:2016-09-21 02:05:23

标签: ios swift xcode parse-platform

我对swift和parse有点新意,可以使用一些帮助。我正在运行对我的数据库中所有用户的查询,以便您可以点击一个并将它们添加到您的friendRelation。但是当他们重新加载时,他们不应该看到已经处于关系中的用户。以下是我到目前为止的情况:

private func fetchUsers() {

    let userQuery = PFUser.query()
    userQuery?.whereKey("email", containedIn: PFUser.currentUser()!["contacts"] as! [AnyObject])

    //I need a constraint to say whereKey email/objId not in friendRelation

    userQuery?.orderByAscending("username")
    userQuery?.findObjectsInBackgroundWithBlock({ (users, error) in

        if error == nil {

            self.users = users as! [PFUser]
            self.tableView.reloadData()

        }
    }) 
}

有谁知道如何制定这种约束?

1 个答案:

答案 0 :(得分:0)

如果您想要显示所有您朋友的用户,您应该在where子句中使用 notContainedIn ,因为您希望获得所有不是您朋友的用户

在您的代码中,您检查电子邮件字段。只有当您的contacts数组是一个只包含电子邮件的数组时,它才会起作用。我认为采用以下方法之一会更好:

  1. 您的联系人数组应包含用户 objectId 的数组,而不是电子邮件,然后您的位置应如下所示:
  2. 
    
    userQuery ? .whereKey("objectId", notContainedIn: PFUser.currentUser() !["contacts"] as![AnyObject])
    
    
    

    总是更好地使用ID而不是其他字段以获得更好的性能(有更多原因)

    1. 您的contacts数组应该包含您的用户对象列表,然后您应该使用不同类型的查询并使用whereKey:doesNotMatchKey:inQuery:option