【问题标题】:Setting the singular side of a to-many relationship in Core Data在 Core Data 中设置一对多关系的单数侧
【发布时间】:2013-01-26 10:00:43
【问题描述】:

我有一个小功能,可以通过我的核心数据模型中的关系查询对象。

我已经建立了关系的多方关系。但是,我无法弄清楚如何正确设置关系的单数方面,因为它被认为是NSSet,我不知道该怎么做。

我尝试将对象放在我想分配给另一个“多对多”实体的NSSet 中,但这返回了错误。

我尝试查看文档,发现的唯一示例是多对多关系。

我尝试在 SO 上搜索了一下,但找不到提出这个特定问题的人。

希望有人能理解我的要求,并帮助我!

编辑:

为了帮助大家形象化,我设置了关系的“shindys”端,但现在我尝试设置“用户”端,如您所见,这是一个单一的关系。

编辑:

在下面@Mundi 的回答之后,我将其作为我的数据模型:

这一切都是正确的,我只需要能够获取用户的所有朋友 shindy 以及他们自己的朋友。您可以将此与 Twitter 的主页进行比较。

【问题讨论】:

  • 您能否提供更多信息,例如数据结构?我不确定我是否理解您的问题
  • 当然,我认为这太难了。查看我的编辑。
  • 希望下面的教程能帮到你raywenderlich.com/14742/…
  • 我没有看到任何东西可以解释一对多的关系。
  • 那么现在你基本上是在尝试添加用户?

标签: ios xcode core-data ios6


【解决方案1】:

在我看来,您的数据模型设置错误。

一个用户可以有很多消息。一条消息至少有两个用户(发件人和收件人)。我不知道 shindy 是什么,但是按照您的设置方式,一个用户只有一个 shindy,可以在多个用户之间共享。

如果这是正确的,您需要更改数据模型的消息部分,使其成为多对多,或者更好地建立两个描述发送者和接收者的关系。

Message                       User
  sender <<-------------------->sentMessages
  receivers <<---------------->>receivedMessages

此外,您应该将用户属性“shindys”重命名为“shindy”,因为它只是单数。既然我们知道 shindy 是一个聚会,您应该将这种关系更改为 many对多。

因此,如果每个用户只有一个 shindy(无论如何,请说明),您可以使用这样的排序描述符

[NSSortDescriptor sortDescriptorWithKey:@"shindy.timePosted" ascending:NO];

但是,如果您想按 shindy 过滤(如果有多个用户,则所有用户都属于一个 shindy),您必须使用谓词,像这样

[NSPredicate predicateWithFormat:@"ANY shindies.profileID = %@", 
                                                someUser.profileID];

或使用其他方法来识别 shindy。

【讨论】:

  • 我很喜欢你尝试解释“shindy”这个词,哈哈。 Shindy 是人们在 1800 年代用来描述聚会的词。我正在构建的应用程序是基于聚会的,所以我认为这个词非常适合它:) 无论如何,我明白你在说什么。因为我刚刚制作了消息实体,所以我现在并没有太专注于消息实体,但是非常感谢你!至于 Shindy 实体:你说得有道理。我将重新编写我的代码以反映这一点,希望您的解决方案是我正在寻找的解决方案!
  • 我现在遇到的问题是,我有一个供稿,其中一个用户可以看到他们朋友扔的所有 shindys。我需要一些方法来获取他们所有朋友的 shindys 以及他们自己的。想想一个类似于 Twitter 的平台。如果您能告诉我如何做到这一点,我相信您已经完全回答了我的问题!到目前为止,您发布的所有内容都是正确的。我感谢您的帮助。查看我的编辑。
  • 您尚未定义“朋友”关系。
  • 我知道。我暗示的是我计划创建一个,但是我如何将他们的 shindys 与当前用户结合起来呢?我真的不能同时做两个NSFetchRequests,那我该怎么做呢?
  • 您使用带有谓词的获取请求。这真的很简单。 shindy 的客人只是shindyObject.users
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多