聊天,对话,消息 - 核心数据模型

时间:2014-03-20 09:53:56

标签: ios objective-c core-data data-modeling

在将问题标记为this question的副本之前,请阅读说明。我不需要在评论中继续讨论。

所以我想为消息传递应用创建CoreData模型。就像我在这个主题中所说的那样 - 我有三个实体:

  1. User实体定义了对话中的消息作者和参与者。
  2. Message实体定义使用app发送的每个文本。
  3. Conversation实体使用消息定义用户beetwen用户。
  4. 好的,我的数据模型如下: Data model

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

    但据我所知,当一切都相互连接时数据模型没有任何意义。

    所以这里的主要目标是:

    1. 在对话界面,我想知道是谁写了什么
    2. 在一个对话中可以参与至少两个用户
    3. 该消息仅为纯文字
    4. 用户必须能够列出他的所有对话。
    5. 那就是它。

      请验证当前的解决方案,并随时批评。

1 个答案:

答案 0 :(得分:3)

据我所知,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