Parse.com - 使用Swift获取关系

时间:2015-12-18 19:35:41

标签: ios swift parse-platform pfquery

我有一个用户收藏夹类,用于存储用户对象和事件对象,当用户收藏事件时,它会被设置。

我想显示给定用户的收藏夹的完整列表。因此,我查询favorites类以获取事件对象,然后尝试查询事件表以匹配来自收藏夹的事件对象与实际事件类以引入事件名称和ID。例如,在ruby中,假设设置了关系/关联,我只需要调用:

favorite.event.name
favorite.event.id

Swift中的等价物是什么?这是我到目前为止所做的,但有些事情告诉我,我过度复杂,我希望有简单的方法可以通过关系检索数据。

let query = PFQuery(className: "Favorite")
    query.includeKey("eventId")
    query.whereKey("createdBy", equalTo:userId!)
    query.findObjectsInBackgroundWithBlock { (favorites:[PFObject]?, error:NSError?) -> Void in

        if (error == nil){
            print("Favorite Count: \(favorites!.count)")
            print("Favorite Event IDs: \(favorites!)")

            for favorite in favorites! {
                print("Favorite: \(favorite)")

                let eventNameQuery = PFQuery(className: "Event")
                eventNameQuery.whereKey("eventId", equalTo:favorite )
                eventNameQuery.findObjectsInBackgroundWithBlock { (events:[PFObject]?, error:NSError?) -> Void in

                    if (error == nil){
                        print(events!.count)
                        print(events!)

                        for event in events! {                            
                            self.favoriteListItems.append(event.objectId! as String)  
                            self.favoriteListIds.append(event.objectId! as String) 
                        }
                    }
                }
            }
            self.savedEventsListTableView.reloadData()
        } else {  
            print("error fetching objects") 
        } 
    }  
}

当我运行它时,我得到零结果......当我在解析核心中知道时,我有两个匹配的对象,如下所示:

最喜欢的课程: Favorite Class with event object and user object

活动类别: Event Class

1 个答案:

答案 0 :(得分:1)

首先查询用户对象的指针,而不是用户的objectId

query.whereKey("createdBy", equalTo:PFUser.currentUser()!)

接下来你可能想要添加事件名称。

for event in events! {
 self.favoriteListItems.append(event["eventName"] as! String)
 self.favoriteListIds.append(event.objectId! as String)
}