聊天,会话,消息传递 – CoreData模型

在将问题标记为该问题的重复之前,请阅读说明。 我不需要在评论中继续讨论。

所以我想创build消息应用程序的CoreData模型。 就像我在这个话题中所说的那样 – 我有三个实体:

  1. User实体定义对话中的消息和参与者的作者。
  2. Message实体定义每个发送应用程序的文本。
  3. Conversation实体定义使用消息的用户对话。

好吧,我的数据模型是这样的: 数据模型

但是这里的一切都连接在一起。 提到的答案和我的解决scheme之间唯一的区别是UserMessage使用一对多的关系连接 。 我想我需要这个,因为没有这个知道谁在谈话中写什么是不可能的。

但是据我所知,数据模型当一切连接到对方都没有任何意义。

所以这里的关键目标是:

  1. 在对话屏幕上,我想知道是谁写的
  2. 在一个对话中可以至less参与两个用户
  3. 该消息是纯文本的
  4. 用户必须能够列出他所有的对话。

而已。

请validation当前的解决scheme,并随意批评。

据我所知, UserConversation之间并不存在真正的多对多关系。

如果用户喜欢获取所有的对话,他可以使用这个获取请求:

 User* user = //get some user you like conversations for NSFetchRequest* r = [NSFetchRequest fetchRequestWithEntityName:@"Conversation"]; r.predicate = [NSPredicate predicateWithFormat:@"ANY messages.author = %@",user]; 

以同样的方式,您可以获得给定对话的所有用户。

您可以将其设置为每个实体( UserConversation )的提取属性。

您应该考虑将chat关系改为messages