我正在執行消息傳遞功能到我的快速應用程序中,它運行在Parse上,並且使用orQueryWithSubqueries
方法查詢Conversation
對象的方法並不像它應該的那樣工作。下面是我如何設置我的查詢:Parse或QueryWithSubqueries不能正常工作(swift)
var user1 = PFQuery.getUserObjectWithId("someUserObjectID")
var user2 = PFQuery.getUserObjectWithId("otherUserObjectID")
var query1 = PFQuery(className: "Conversation")
query1.whereKey("user1", equalTo: user1!)
query1.whereKey("user2", equalTo: user2!)
var query2 = PFQuery(className: "Conversation")
query2.whereKey("user1", equalTo: user2!)
query1.whereKey("user2", equalTo: user1!)
var query = PFQuery.orQueryWithSubqueries([query1, query2])
query.includeKey("user1")
query.includeKey("user2")
query.getFirstObjectInBackgroundWithBlock {
(object: PFObject?, error: NSError?) -> Void in
if (error == nil) {
println("Found conversation object!")
} else {
var errorCode = error!.code
if (errorCode == 101) {
println("Did not find conversation object!")
} else {
println("Unknown error occurred.")
}
}
}
本質上說,在我的方案中Conversation
對象是PFObject
兩個相關領域:user1
和user2
...它只是定義了兩個用戶的談話之間。我需要這個查詢工作的原因是,當一個用戶想和朋友一起開始一個新的Conversation
...我首先檢查Conversation
是否存在,這個查詢是我如何做到的。因爲我不知道是誰開始了Conversation
,所以我需要檢查兩個用戶字段中的兩個用戶(我的應用程序會自動填充user1字段與誰開始對話)。
無論如何,這裏是奇怪的行爲發生的地方。我在雲中的談話對象,其中:
user1 = someUser
user2 = otherUser
如果我跑我的查詢它上面鍵入...的Conversation
對象不被orQueryWithSubqueries
(發現的方式,即使query1
應該找到Conversation
對象!)。但是,如果我從orQueryWithSubqueries
中刪除query2
,或者甚至只是註釋掉query2
中的whereKey
約束...找到Conversation
對象。這很奇怪,因爲query2
甚至不應該找到Conversation
對象!因爲query1
是匹配對象的那個,並且orQueryWithSubqueries
應該返回與任一查詢匹配的對象。任何人都可以闡明我做錯了什麼嗎?