[英]Swift Parse - using PFQuery orQueryWithSubqueries function
[英]Parse orQueryWithSubqueries not working correctly (swift)
我正在努力在運行於Parse的swift應用程序中實現消息傳遞功能,並且使用orQueryWithSubqueries
方法查詢Conversation
對象的工作效果不理想。 這是我設置查詢的方式:
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
應該返回與任一查詢匹配的對象。 有人能說明我做錯了什么嗎?
萬一其他人遇到此問題,我永遠都找不到找到使orQueryWithSubqueries
正常工作的方法(可能是Parse iOS SDK中的錯誤),但這是我的解決方法:
var query = PFQuery(className: "Conversation")
query.whereKey("user1", containedIn: [user1, user2])
query.whereKey("user2", containedIn: [user1, user2])
query.getFirstObjectInBackgroundWithBlock {
(object: PFObject?, error: NSError?) -> Void in
if (error == nil) {
} else {
var errorCode = error!.code
if (errorCode == 101) {
} else {
// Handle error here.
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.