2015-03-19 60 views
0

所以我在正确解析使用下面的代码设置我的关系:Parse.com获取用户喜欢的对象

var user = PFUser.currentUser() var relation = user.relationForKey("likes") relation.addObject(self.post) user.saveInBackgroundWithBlock({ (Bool, error) -> Void in println("user likes this post") // Used for tracking in the PFTableCell for UI parts self.userLikes = true })

当视图加载,我需要更改按钮喜欢和颜色等我想让所有喜欢这个特定的职位的用户,但无法弄清楚查询?它会给我一些其他有用的信息(例如,我可以显示喜欢这个帖子的人的用户名)。

作为一种变通方法,我可以做让所有用户喜欢的职位:

var user = PFUser.currentUser() 
var relation = user.relationForKey("likes") 
relation.query().findObjectsInBackgroundWithBlock { 
    (objects: [AnyObject]!, error: NSError!) -> Void in 
    if error != nil { 
     // There was an error 
     println(error) 
    } else { 
     // objects has all the Posts the current user liked and do something. 
     println(objects)   
    } 
} 

但是这不是我后?我使用Swift和Parse SDK,但很高兴在Obj C中有答案,我会翻译。解析文档的建议是错误的:https://www.parse.com/docs/ios_guide#objects-pointers/iOS我可以存储类似的帖子而不是用户,但这意味着我必须打开访问权限,这是一个不是没有的帖子

回答

0

有一个问题与您的数据库结构。你不应该只有User对象,但你也应该有Post对象。该帖子可以具有指向喜欢该帖子的所有用户的喜欢关系。当用户喜欢这个帖子时,这个用户就会被添加到帖子的喜欢关系中。因此,为了获得你需要的信息,你只需要看看邮政的关系。

你对邮政的开放使用权有何意义?您是否希望只有发布该用户的用户才能阅读该文章?

或者是授予访问用户对象的问题?我不确定它是否真的存在问题,因为您可能只是快速计算关系中的用户对象,而不实际查看用户对象中的数据。你可以创建Like对象,但我不认为这是必要的。

+1

我的数据库结构很好,我有Post对象和User对象。问题是,当我对关系object.relationForKey(“likes”)做一个relation.query()时,它返回null(大概是因为Posts不喜欢用户)。我遵循了parse.com文档,但是他们的一个教程建议在帖子上设置喜欢关系(即Post likesBy User)。然而,为了做到这一点,我相信所有的帖子都需要公开阅读写入权限,而我只希望他们拥有公开阅读权限(当然除外创建它的用户) – ExoticChimp 2015-03-19 01:26:00

+0

本质上,我设置成功保存关系USER已经开始喜欢POST。现在我想要的是能够检索到反例,即所有那些谁喜欢那个帖子 – ExoticChimp 2015-03-19 01:27:30

+1

我得到的问题。为了更新喜欢的关系,你需要在帖子上写入权限。不幸的是,Parse不允许你设置按字段读/写访问。我真的不认为给Post留下了访问权限,但如果你这么想的话,你可以创建两种不同类型的Post对象 - Post和PostDetail。 Post有一个postDetail指针。帖子是只读的,除了海报,但PostDetail是每个人都可以写的。 PostDetail包含喜欢的关系。 – 2015-03-19 01:31:17