将 Core Data 中的一对多显示为一对一

Posted

技术标签:

【中文标题】将 Core Data 中的一对多显示为一对一【英文标题】:showing one-to-many as one-to-one from Core Data 【发布时间】:2014-03-27 21:55:51 【问题描述】:

我有一个联系人的关系,这些联系人的电话号码是一对多的关系。

但是,我需要在 tableView 单元格中显示每个联系人的不同电话号码,所以我不确定在获取结果后我该怎么做?

目前,这是我为不同电话号码获取多个相同联系人的逻辑。

for (Contact *contact in fetchedRecords)
    
        for (Phone *phone in contact.phoneNumbers)
        
            [multipleContacts addObject:contact];
        

    

但是,我认为会有更好的方法来获取联系人的此类记录以获取每个电话号码条目的结果。

【问题讨论】:

您能否添加更多关于您希望它如何显示的详细信息?听起来您想显示每个具有唯一电话号码的联系人。 它更像是显示每个联系人都有一个号码,同一个人可以是不同的号码。这如何通过 NSPredicate 实现? 我们可以假设关系是PhoneContact(联系人可能有很多电话号码,但一个电话号码有一个联系人)? 【参考方案1】:

按照您的要求,最简单的方法是获取 Phone 对象而不是 Contact 对象。这样,tableView 中的每一行都将对应一个Phone,然后您可以按照从PhoneContact 的反向关系来获取要显示的名称。

【讨论】:

在这种情况下,反向关系对我有用。谢谢@聪明

以上是关于将 Core Data 中的一对多显示为一对一的主要内容,如果未能解决你的问题,请参考以下文章

Core Data addObject 一对多关系

如何处理 CORE DATA 中的一对多关系

如何管理 Core Data 中的一对多关系?

在 Core Data 中有效地获取一对多关系中的最新记录

RestKit Core Data 一对多映射

Core Data 使用多个上下文中的新对象从后台线程订购一对多关系保存