Parse.com - 使用 Swift 获取关系

Parse.com - Fetching relation using Swift

我有一个用户收藏夹 class,它存储了一个用户 object 和一个事件 object,当用户收藏一个事件时它会被设置。

我想显示给定用户收藏夹的完整列表。因此,我查询收藏夹 class 以获取事件 objects,然后尝试查询事件 table 以将收藏夹中的事件 object 与实际事件 class 以获取事件名称和 ID。例如,在 ruby 中,假设设置了 relations/associations,我会调用:

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") 
        } 
    }  
}

当我 运行 这样做时,我得到零结果...当我知道在解析核心中我有 object 匹配两者时,如下所示:

最喜欢的Class:

事件Class:

首先查询指向用户对象的 指针 ,而不是用户的 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)
}