我在iOS Swift应用程序中使用了Parse,但在查找如何对两个集合进行查询时遇到了麻烦,我想与联接类似。
我有一个列表集合,其中包含家庭信息和一个userId。我已向用户集合添加了一个键值,该值指示用户是否正在休假。我要查询的是查找用户不在休假的所有列表。
这是用于检索列表的解析代码,但我不知道如何从用户集合中添加第二个条件。
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")
那么,如何结合使用这些查询来查找用户未休假的所有列表?
如果有人可以向我展示一个简短的摘要,或者将我指向一个对两个集合进行查询的示例,那就太好了。我已经阅读了有关关系,查询等方面的解析文档,但仍然无法理解如何将以上两个查询放在一起。
感谢您的帮助。
答案 0 :(得分:0)
从您的帖子中尚不清楚如何将用户与列表相关联,但是假设列表中有指向用户的指针,那么您可以执行类似的操作
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 guide