我正在使用 Parse,我的应用程序是用 Swift 编写的。我有一个高尔夫应用程序,允许用户与其他用户成为朋友。用户可以记录他们的高尔夫分数,然后在排行榜样式的 tableViewController 中查看他们的高尔夫分数和他们朋友的分数。
我遇到的问题是 Parse 不支持查询中同一键的两个约束。我有一个函数可以查询用户及其分数并将它们存储在一个元组数组(leaderboardData)中。我正在尝试查询当前用户的 PFRelation 以及当前用户(变量“friendsRelation”和常量“friendQuery”)。我查询的类是“GolfScorecard”,它是 Parse 上存储分数的地方。然后我在“golfer”键上调用了“whereKey”方法,这是我的用户在 Parse 上的存储位置。我为我的朋友关系查询调用“whereKey matchesQuery”,然后调用“whereKey equalTo”来尝试获取我当前的用户。然后我“includeKey”“golfer”,这样我就可以获得用户信息和分数信息。关于如何解决这个问题的任何建议?我试图在一个查询中完成所有操作,但是当在同一个键(“golfer”)上调用“whereKey”方法时,最后一个会覆盖第一个,这使得只能获取朋友信息或当前用户信息,但不是两者。我很难过如何将两者都包括在内。提前致谢。
这是我调用来进行查询的函数:
func loadLeaderboardData() {
leaderboardData.removeAll()
friendsRelation = PFUser.currentUser()?.objectForKey("friendsRelation") as? PFRelation
friendsRelation = PFUser.currentUser()?.objectForKey("friendsRelation") as? PFRelation
let friendQuery = friendsRelation?.query()
let query = PFQuery(className: "GolfScorecard")
query.whereKey("golfer", matchesQuery: friendQuery!)
query.whereKey("golfer", equalTo: PFUser.currentUser()!)
query.includeKey("golfer")
query.orderByAscending("score")
query.findObjectsInBackgroundWithBlock { (scoreCards: [PFObject]?, error: NSError?) -> Void in
if error == nil {
for object:PFObject in scoreCards! {
let golfer:PFObject = object["golfer"] as! PFObject
self.leaderboardData.append(object,golfer)
dispatch_async(dispatch_get_main_queue()) {
self.leaderboardTableView.reloadData()
}
}
} else {
print(error)
}
}
}