如何从parse.com关系中获取数据?

时间:2015-06-30 23:11:18

标签: swift parse-platform relation

我使用parse.com作为iOS Swift应用的后端。

我有帖子&用户。用户可以喜欢帖子。

当我收到帖子列表时,我想看看PFUser.Currentuser()是否喜欢每个帖子。

在我目前的数据模型中,我在帖子上使用了一个关系。

    let post = PFObject(withoutDataWithClassName: "Post", objectId: postId)
    let relation = post.relationForKey("likers")
    relation.addObject(PFUser.currentUser()!)
    post.saveInBackground()

当我查询帖子时,我将每个帖子放入PostView对象。

let query = PFQuery(className: "Post")

query.findObjectsInBackgroundWithBlock{
        (objects : [AnyObject]?, error : NSError?) -> Void in
        if error == nil {
            if let objects = objects as? [PFObject] {
                for (index, object) in enumerate(objects) {
                    //convert PFObject into Post
                    let post = PostView(postQuery: object)
         }         
}

我希望在PostView中有一个布尔值,如果当前用户喜欢这个帖子,那就是真的。

class PostView {

var id = ""
var description = ""

var isPostLikedByCurrentUser : Bool?

init(postQuery : PFObject){
    self.id = postQuery.objectId!
    self.description = postQuery["description"] as! String
}

我根本不知道在何处或如何获取关系的内容。它在查询中吗?或者我应该在PostView中这样做,如果是这样的话?

我在PostView中试过这个

    let relation = postQuery.relationForKey("likers")
    let debug = relation.query()?.findObjectsInBackground()

关系有效,但我没有将任何数据输出到调试中。

非常感谢!

更新

这可行,但会进行大量查询...如何将其缩减为一个查询?我很乐意改变我的数据模型。

class PostView {

var id = ""
var description = ""

var isPostLikedByCurrentUser : Bool?

init(postQuery : PFObject){
    self.id = postQuery.objectId!
    self.description = postQuery["description"] as! String

    let relation = postQuery.relationForKey("likers")

    let query = relation.query()

    query?.findObjectsInBackgroundWithBlock{
        (objects : [AnyObject]?, error : NSError?) -> Void in
        if error == nil {
            if let objects = objects as? [PFObject] {
                for (index, object) in enumerate(objects) {

                    if (object["email"]?.isEqual(PFUser.currentUser()?.email) != nil)
                    {
                         self.isPostLikedByCurrentUser = true
                    }
                }
            }
        }
    }


}

0 个答案:

没有答案