我正在使用Parse,而我的應用程序是用Swift編寫的。我有一個高爾夫應用程序,允許用戶與其他用戶進行交流。用戶可以記錄他們的高爾夫分數,然後在排行榜樣式tableViewController中看到他們的高爾夫分數和他們的朋友的分數。解析查詢中一個鍵的兩個約束
我遇到的問題是Parse不支持查詢中同一個鍵上的兩個約束。我有一個函數查詢用戶和他們的分數,並將它們存儲在一個元組數組(leadeboardData)中。我試圖查詢當前用戶的PFRelation以及當前用戶(變量「friendsRelation」和常量「friendQuery」)。我查詢的類是「GolfScorecard」,這是將分數存儲在Parse中的地方。然後,我在「高爾夫球手」鍵上調用「whereKey」方法,這是我的用戶在Parse下存儲的地方。我爲我的friendsRelation查詢調用「whereKey matchesQuery」,然後「whereKey equalTo」嘗試獲取當前用戶。然後我「包含鍵」「高爾夫球手」,這樣我就可以得到用戶信息以及得分信息。有關如何解決這個問題的任何建議?我試圖在一個查詢中完成所有操作,但是當在同一個鍵(「高爾夫球手」)上調用「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)
}
}
}
您可以創建'高爾夫球手== currentUser'第二查詢,然後使用'orQueryWithSubQueries'你合併這兩個查詢 – Paulw11