在将问题标记为this question的副本之前,请阅读说明。我不需要在评论中继续讨论。
所以我想为消息传递应用创建CoreData
模型。就像我在这个主题中所说的那样 - 我有三个实体:
User
实体定义了对话中的消息作者和参与者。Message
实体定义使用app发送的每个文本。Conversation
实体使用消息定义用户beetwen用户。好的,我的数据模型如下:
但是这里的一切都是相互联系的。提到的答案与我的解决方案之间的唯一区别是 User
和Message
使用一对多关系进行连接。我想我需要那个,因为没有它,不可能知道谁在谈话中写了什么。
但据我所知,当一切都相互连接时数据模型没有任何意义。
所以这里的主要目标是:
那就是它。
请验证当前的解决方案,并随时批评。
答案 0 :(得分:3)
据我所知,User
和Conversation
之间并不存在多对多关系。
如果用户想要获得所有对话,他可以使用此获取请求:
User* user = //get some user you like conversations for
NSFetchRequest* r = [NSFetchRequest fetchRequestWithEntityName:@"Conversation"];
r.predicate = [NSPredicate predicateWithFormat:@"ANY messages.author = %@",user];
以同样的方式,您可以获得给定对话的所有用户。
您可以将其建模为每个实体(User
和Conversation
)的已获取属性。
您应该考虑将chat
关系更改为messages