ios - NSPredicate & Parse 让它从数组中返回与当前用户匹配的结果,以及用户名字符串

标签 ios swift parse-platform nspredicate

基本上,我正在开发一个聊天应用程序。为了从解析中检索“房间”对象,我使用如下查询:

func loadData(){

    rooms = [PFObject]()
    users = [PFUser]()

    self.tableView.reloadData()

    let pred = NSPredicate(format: "user1 = %@ OR user2 = %@", PFUser.currentUser()!, PFUser.currentUser()!)
    let roomQuery = PFQuery(className: "Room", predicate: pred)

    roomQuery.orderByDescending("lastUpdate")
    roomQuery.includeKey("user1")
    roomQuery.includeKey("user2")

    roomQuery.findObjectsInBackgroundWithBlock { (results, error) -> Void in
        if error == nil {

            self.rooms = results as! [PFObject]

            for room in self.rooms {
                let user1 = room.objectForKey("user1") as! PFUser
                let user2 = room["user2"] as! PFUser

                if user1.objectId != PFUser.currentUser()!.objectId {
                    self.users.append(user1)
                }

                if user2.objectId != PFUser.currentUser()!.objectId {
                    self.users.append(user2)
                }
            }

            self.tableView.reloadData()
        }
    }

}

现在,在查找当前用户所属的任何房间时,此功能运行良好。我想做的是在应用程序的某个地方,我还有一个用户名数组(字符串类型)。

所以问题是:如何使用上面的 NSPredicate,以确保返回的 results/PFObject 也能匹配中的任何用户名user1 或 user2 用户名的数组。

(基本上,这个想法是,该数组代表您的联系人,如果某人不再是您的联系人,您不应该再看到该房间)

请漂亮一点好吗? :<

最佳答案

您应该创建一个允许用户的数组,包括当前用户和所有其他用户 ID 的占位符对象(请参阅 objectWithoutDataWithClassName:objectId: )。然后在查询中使用该数组与 IN,而不是测试直接相等 (=)。

关于ios - NSPredicate & Parse 让它从数组中返回与当前用户匹配的结果,以及用户名字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30838227/

相关文章:

ios - 自动化UI测试中如何上传记录

iOS 10.2 - 使用手电筒激活 Retina Flash 而不是 Back LED

ios - 如何在 Objective-C 中使用 Swift 非 NSObject 子类

swift - 如何在相机中绘制线节点并保持与iPhone中的测量应用程序相同的尺寸?

javascript - 解析云代码获取指针

Swift:根据另一个属性从 Parse.com 检索对象值

ios - 只允许 UIPageViewController 在不接触 UIImageView 内部时滚动

swift - 创建记录后如何创建结果?

javascript - Parse.com/Javascript - 将用户 objectid 字符串保存为用户指针

xcode - Swift:检查变量是否为零