首页 > 解决方案 > 从 2 个集合中解析查询

问题描述

我在 iOS Swift 应用程序中使用 Parse 并且无法找出如何对两个集合进行查询,我想类似于加入。

我有一组列表,它们包含家庭信息和用户 ID。我向用户集合添加了一个键值,指示用户是否正在度假。我要做的查询是查找用户未休假的所有列表。

这是用于检索列表的解析代码,但我不知道如何从用户集合中添加第二个条件。

            let query = PFQuery(className: "Listing")
        query.order(byDescending: "createdAt")
        query.whereKey("categoryHome", equalTo: type.rawValue)
        query.limit = limit
        query.skip = skip
        query.findObjectsInBackground { (objects, error) -> Void in
            if let objects = objects as? [Listing]
            {
                success(objects)
            }
            else
            {
                let error = error! as NSError
                let errorMessage = "\(error.localizedDescription)\n(\(error.code))"
                SVProgressHUD.showError(withStatus: errorMessage)
            }
        }

我打算做这样的事情来查询用户,但我需要将它添加到上面的查询中。

    let userQuery = PFUser.query()
    userQuery.whereKeyDoesNotExist("onVacation")

那么,如何将这些组合起来进行一个查询,以查找用户未休假的所有列表?

如果有人可以给我看一个快速的片段,或者给我一个示例,在其中对两个集合执行查询,那就太好了。我已经阅读了关于关系、查询等的解析文档,但仍然无法理解如何将上面的两个查询放在一起。

谢谢你的帮助。

标签: iosswiftparse-platform

解决方案


从您的帖子中不清楚您如何将用户与列表相关联,但假设列表有一个指向用户的指针,那么您可以做这样的事情

var userQuery = PFUser.query()
userQuery!.whereKeyDoesNotExist("onVacation")
var listQuery = PFQuery(className:"Listing")
listQuery.whereKey("categoryHome", equalTo: type.rawValue)
listQuery.whereKey("user", matchesQuery: userQuery!)
listQuery.findObjectsInBackgroundWithBlock {
   (results: [PFObject]?, error: NSError?) -> Void in
   if error == nil {
   // results will contain lists where the user is not on vacation
   }
}

如果您想了解更多信息matchesQuery,请查看Parse iOS 指南


推荐阅读