iOS核心数据与一个反身关系的谓词

时间:2014-07-29 12:16:54

标签: ios core-data nspredicate entity-relationship nsfetchrequest

我正在开发一个简单的消息传递应用程序,并在重放之间使用实体保持关系。 设置To-One反身关系如下。

Reflexive relationship

现在我很难将NSFetchedResultsController中的所有回复提取到tableview上显示(基本上我需要在tableview中显示之前的所有会话)。你能帮帮我吗,我怎么能这样做?也许创建一个获取所有相关备忘录的谓词。

更正了实体布局。 enter image description here

1 个答案:

答案 0 :(得分:1)

这种模式似乎不对。

  • 首先,您应该命名关系来描述他们指向的内容。
  • 其次,所有关系都应该有反比关系。
  • 第三,不要给你的实体一个复数名称。称之为Memo而不是Memos。它会让一切变得更轻松。
  • 第四,不要在对象中使用外键(如staffid),而是创建与名为staff的{​​{1}}实体之间的一对多关系。反之为author或其他。

此消息传递应用。是短信发短信只有一个人可以看到(然后回复)每条消息?或者它就像Twitter,很多人都可以回复消息?

短信模式

对于SMS类型模型,您应该有另一个像authoredMemos这样的实体,它与它包含的消息有一对多的关系。然后,您可以运行单个查询来获取所有查询并按日期顺序显示它们。

推特模型

对于Twitter类型模型,你应该有关系......

  • 回复 - [一组备忘录对象]
  • replyTo - [单个备忘录对象]

这些应该是反向关系。

现在,如果用户Conversationreplies,您可以将其添加到该memo的{​​{1}}数组中。