首页 文章

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

提问于
浏览
0

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

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

data model

我已经尝试将对象放在 NSSet 中,我想分配给另一个"to-many"实体,但是返回了一个错误 .

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

我试着搜索一下,找不到任何问过这个具体问题的人 .

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

EDIT:

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

EDIT:

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

enter image description here

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

1 回答

  • 1

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

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

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

    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 .

相关问题