【问题标题】:Parse.com: how to best keep track of already seen imagesParse.com:如何最好地跟踪已经看过的图像
【发布时间】:2015-03-06 17:39:06
【问题描述】:

我有一个应用程序,用户可以在其中对一张照片进行投票,然后继续下一张。我需要知道最有效的策略来跟踪用户已经投票的照片,这样他就不会两次看到同一张照片。

我目前的策略是在每个用户个人资料中保留一个包含所有已投票照片 ID 的数组。然后我获取新照片并确保它们的 id 与数组中的任何 id 都不匹配。

我认为这不是正确的策略,因为数组应该包含有限数量的项目......在这种情况下,用户可能查看了很多图像。

我认为为每个投票创建一个包含一个条目的类也不合适。

Parse.com 文档中有几个关于“关系”的选项,但我真的不确定该选择一个:

1) 跟踪用户看到的照片 2)获取新照片,不包括那些

如果您知道执行此操作的最佳方法,请提供建议。我在 iOS swift / 但这个问题与语言无关。

【问题讨论】:

  • 您可以在核心数据中添加所有“投票”的照片,并在其中进行查询以查找照片是否存在。
  • 确实是一个有趣的解决方案。但我更喜欢下载的数据是否已经过滤。
  • 您可以添加 PFRelation 以将 VotedPhotos(PFFiles) 附加到用户。然后进行内部查询,其中 Key DoesNotMatchKey 从您的所有照片查询中过滤出投票照片。 stackoverflow.com/questions/28780592/…
  • 所以如果我理解正确的话,每个照片条目都会对所有投票的用户产生 PFRelation,对吗?

标签: parse-platform


【解决方案1】:

我终于按照建议建立了照片和用户之间的关系:

 var query = PFQuery(className:"Photos")
    query.getObjectInBackgroundWithId(objectId) {
        (photoEntry: PFObject!, error: NSError!) -> Void in
        if error != nil {
            NSLog("%@", error)
        } else {
            var relation = photoEntry.relationForKey("UsersThatVoted")
            relation.addObject(PFUser.currentUser())
            photoEntry.saveInBackgroundWithBlock {
            //Rest of the query

其中“UsersThatVoted”是“照片”类中的关系字段,它链接到 Parse 默认用户类。每次用户对照片进行投票时都会触发此事件。

然后,很容易进行常规查询以排除与当前用户相关的照片,这样他就不会看到两次同一张照片:

query.whereKey("UsersThatVoted", notEqualTo: PFObject(withoutDataWithClassName:"_User", objectId:me.objectId))

我是当前用户。您只需将此行添加到常规查询(在我的情况下为“照片”),您甚至不需要进行第二次内部查询。

【讨论】:

    猜你喜欢
    • 2021-07-13
    • 2018-07-19
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2017-07-07
    相关资源
    最近更新 更多