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)
}
我有一个用户收藏夹 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)
}