Swift 通过关系列出朋友名单

Swift 通过关系列出朋友名单,swift,parse-platform,Swift,Parse Platform,我正在创建一个社交媒体应用程序。我可以允许当前用户搜索PFUser,并将用户添加到友谊关系中。我现在正在努力访问友谊关系,让所有的朋友创建一个表视图。有人能帮我吗 Arelationshiptype inParse表示的与字面意思相同。它只是一个不包含数据的关系。如果要访问关系中的数据。您需要对其执行如下查询: let query = relation.query() // I assume relation is an instance of PFRelation you want 实际上,

我正在创建一个社交媒体应用程序。我可以允许当前用户搜索
PFUser
,并将用户添加到
友谊关系中。我现在正在努力访问友谊关系,让所有的朋友创建一个表视图。有人能帮我吗

A
relationship
type inParse表示的与字面意思相同。它只是一个不包含数据的关系。如果要访问关系中的数据。您需要对其执行如下查询:

let query = relation.query() // I assume relation is an instance of PFRelation you want
实际上,Parse教程为我们提供了一个非常全面的指南,您应该首先检查:

注意:这个答案提供了使用关系结交朋友系统的替代方法

我用两种方法创建了一个friend系统,使用Parse,这两种方法都是根据您的具体需求而创建的

我第一次实现朋友系统。我有一个
用户表
和一个
关系表
Relationships
表存储了关系中两个用户的用户名(或objectid)以及该关系的状态(朋友、发送的请求等)。这样做的问题是,查询可能有点复杂,如果有很多用户,这可能会导致速度太慢

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

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

  • 用户A将用户B的姓名添加到
    RequestSent
  • 用户A向云代码发送他/她想要添加用户B的消息
  • CloudCode将用户A的名称添加到用户B的
    RequestReceived
  • 用户B想要接受用户A的请求

  • 用户B将用户A的姓名添加到
    朋友中
  • 用户B从
    RequestSent
  • 用户B向CloudCode发送一条消息,表示他/她希望接受用户a的好友请求
  • CloudCode将用户A的名字添加到
    朋友中
  • CloudCode从
    RequestReceived
  • 使用此选项,您永远不会执行任何服务器端查询。您只能执行
    get
    操作。此选项的缺点是,如果登录用户有数千个好友/请求,则需要一段时间才能下载该信息

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


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

    是的,我试着看了一下,但还是很困惑。因此,我将在键内执行一个查询,该查询等于“friend”(关系),不会混淆。这就是为什么他们称之为关系。这只是关系而已。你是说这不是完成我任务的最佳方式吗?这就是你获取数据的方式。我的意思是,
    关系
    一点也不混乱。干杯您可以使用具有|[Friends]|[sentRequests]|[receivedRequests]结构的UserFriends表,每个人都可以读写该表来执行上述过程。问题仍然在于如何处理更新冲突,其中一个用户读取更新,而在更新之前,另一个用户读取记录,并且当他更新时,超出了先前的更新。这个问题也会影响云代码。你知道如何在没有锁的情况下有效地解决这个问题吗?关于解析中的锁。。这种链接解决了问题