朋友列表通过关系

时间:2015-09-02 20:10:41

标签: swift parse-platform

我正在创建一个社交媒体应用。我可以允许当前用户搜索PFUser并将用户添加到friendship关系。我正在努力寻求友谊关系并让所有朋友立即创建一个表格视图。有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

Parse 中的Relation类型就像它的字面含义一样。它只是一个不包含数据的关系。如果要访问关系内的数据。您将需要像这样执行查询:

let query = relation.query() // I assume relation is an instance of PFRelation you want

实际上, Parse 教程为我们提供了一个非常全面的指南,您应该先检查一下:https://parse.com/docs/ios/guide#relations

答案 1 :(得分:0)

注意:此答案提供了使用关系制作朋友系统的替代方法

我使用Parse以两种方式创建了一个朋友系统,它们都是您特定需求的函数。

我第一次实施朋友系统。我有一张Users表和一张Relationships表。 Relationships表存储了关系中两个用户的用户名(或ObjectIds)以及该关系的状态(朋友,请求发送等)。这样的问题是查询可能有点复杂,如果你有很多用户,这可能最终会变得太慢。

第二个选项是将朋友信息存储在User表本身中。对于每个用户,您可以添加类型为Array的列:FriendsRequestSentRequestReceived。每当用户发送请求时,他们都会更新自己的用户行,并向CloudCode发送消息以更新其他受影响的用户。看一下这个例子:

用户A向用户B发送请求:

  1. 用户A将用户B的名称添加到RequestSent
  2. 用户A向云代码发送消息,表明他/她想要添加用户B
  3. CloudCode将用户A的名称添加到用户B的RequestReceived
  4. 用户B想要接受用户A的请求

    1. 用户B将用户A的名称添加到Friends
    2. 用户B从RequestSent
    3. 中删除用户A的名称
    4. 用户B向CloudCode发送一条消息,表示他/她想接受用户A的朋友请求
    5. CloudCode将用户A的名称添加到Friends
    6. CloudCode从RequestReceived
    7. 中删除用户A的名称

      使用此选项,您永远不会执行任何服务器端查询。您只能执行get次操作。此选项的缺点是,如果登录用户有数千个朋友/请求,则下载该信息需要一段时间。

      注意:您必须使用CloudCode的原因是用户只能更改有关他/她自己的信息。另一个选择是让CloudCode管理所有添加/删除,以便进行更好的检查。

      我发现使用这种方法,您有时会有一个用户被列为另一个用户行中的朋友而不是他们自己的用户。从CloudCode控制所有内容可以消除这种错误。