解析查询 - 保存pfobject和具有一对多关系的子项

时间:2014-09-12 02:05:22

标签: ios parse-platform

我有一个相当典型的评论帖后期应用我试图建立乐趣。我的问题是当我将评论保存到现有帖子时(有一个帖子 - 多条评论关系),评论被保存并理解其与帖子的关系,但帖子不知道评论。

我想要的是什么:

Posts: post "Foo" | comments: "X", "Y" | other columns
Comments:
comment "X" | post "Foo" | ...
comment "Y" | post "Foo" | ...

现在: 评论看起来不错,但帖子缺少一对多的关系

Posts: post "Foo" | <NOTHING> | other columns

我尝试了两种不同的方式来保存对帖子的评论:

1)创建评论作为Post的孩子,保存帖子。根据{{​​3}},这很好,即使我们对post对象执行保存,确实会保存注释。但这篇文章并未将评论视为孩子。

// Inside comment class
let pfComment = PFObject()
pfPost.addObject(pfComment, forKey: "comments") // Add the comment to the post

2)在评论和帖子上做一个saveAll,这给了我两条评论,因为帖子保存的那个被视为与另一个评论分开的新对象

// Same pfComment as above,
PFObject.saveAllInBackground([pfPost, pfComment], block: ...

是什么给出的?解析this link无益!

1 个答案:

答案 0 :(得分:2)

我想当你开始并保存PFObject时,you need to be explicit about what kind of object you're dealing with。所以对于你的评论对象,你可以说pfComment = PFObject(className:&#34; Comment&#34;)。现在当你保存它时,Parse会知道你想要保存什么。

我相信我通过创建一个带有数组的Post类来完成你的目标,如下所示:

Post Class

我还创建了一个简单的注释类,其中包含消息字符串:

Comment Class

从这里开始,我就可以将代码放在一起,为帖子的数组添加注释。

    var post = PFObject(className:"Post")
    var comment = PFObject(className:"PostComment")
    comment["message"] = "New Message"

    var query = PFQuery(className:"Post")
    query.getObjectInBackgroundWithId("fu8gCbYVeI") {
        (result: PFObject!, error: NSError!) -> Void in
        if error == nil {
            post = result
        } else { }
    }

    post.addObject(comment, forKey: "comments")

    PFObject.saveAll([comment, post])

这应该将评论保存为帖子作为实际评论对象的指针。