在Core Data中设置多对多关系的单一方面

时间:2013-01-26 10:00:43

标签: ios xcode core-data ios6

我有一个小功能,我通过Core Data模型中的关系查询对象。

我有关系的多方面所有设置。但是,我无法弄清楚如何正确设置关系的单一方面,因为它被认为是NSSet,我不知道如何处理它。

data model

我已经尝试将对象放在我想要分配给其他“to-many”实体的NSSet中,但是返回了一个错误。

我试着查看文档,我发现的唯一例子是许多关系。

我尝试过搜索一下,找不到任何提出这个具体问题的人。

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

修改

为了帮助你们所有人想象,我已经设置了关系的“shindys”方面,但现在我正在设置“用户”方面,正如你所看到的那样,这是一种单一的关系。

修改

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

enter image description here

一切都是正确的,我只需要有能力获取所有用户的朋友和他们自己的shindy。你可以将它与Twitter的家庭饲料进行比较。

1 个答案:

答案 0 :(得分:1)

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

一个用户可以拥有许多消息。一条消息至少有两个用户(来自和来自)。我不知道什么是shindy,但是你设置它的方式,一个用户只有一个shindy可以在几个用户之间共享。

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

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

此外,你应该将你的用户属性“shindys”重命名为“shindy”,因为它只是单数。现在我们知道shindy是一个派对,你应该将这种关系改为很多一对多。

因此,如果每个用户只有一个shindy(无论是什么,请解释我们),那么要通过shindy对用户进行排序,你会使用这样的排序描述符

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

但是,如果您希望通过shindy进行过滤(如果有多个用户属于shindy),则必须使用谓词,如此

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

或使用其他方式识别shindy。