【问题标题】:How to deal with many to many relationships with NSFetchedResultsController?如何处理与 NSFetchedResultsController 的多对多关系?
【发布时间】:2011-02-09 21:13:18
【问题描述】:

好的,所以我的数据模型中有两个实体(比如说 entityA 和 entityB),这两个实体彼此之间存在一对多关系。

我已经设置了一个 NSFetchedResultsController 来获取一堆 entityA。现在我正在尝试将 tableview 的部分名称作为 entityB 的标题。

sectionNameKeyPath:@"entityB.title"

现在这会导致一个问题,从该关系返回的部分名称似乎是 ({title1}) 或 ({title1,title2...titleN}) 显然取决于涉及多少不同的 entityB。这在表格视图中看起来不太好,并且没有按照我的意愿对对象进行分组。

我想要的是每个 entityB 标题的一个部分,entityA 出现在每个部分下,如有必要,可以在多个部分下。我不知道我应该如何实现这一点,是否需要更新谓词以使实体出现多次,或者我是否需要更新节和标题函数以在控制器循环时进行一些处理对象。

任何帮助表示赞赏:)

谢谢

【问题讨论】:

    标签: iphone objective-c core-data nsfetchedresultscontroller


    【解决方案1】:

    你会得到它,因为调用 @"entityB.title" 将返回一个数组|标题集。这就是您所看到的:

    NSSet *titles = [myEntityA valueForKeyPath@"entityB.title"];
    

    要解决此问题,您需要反转您的 NSFetchedResultsController 以便您获取 EntityA 对象通过 EntityB 对象。那么你的 sectionKeyPath (和你的主要排序)将只针对 @"title"。

    【讨论】:

    • 我不知道如何让 NSFetchedResultsController 通过 EntityB 对象获取 EntityA 对象,但我只是获取了 EntityB 对象并使用 UITableViewDataSource 方法从 NSFetchedResultsController 给我的内容中获取 EntityA。结果并没有我最初想象的那么糟糕。
    • 自己尝试做这件事。 Phil 或 Marcus,您能否详细说明如何执行此操作?在 stackoverflow 和 google 中查看所有内容,运气不佳。任何帮助都将不胜感激。
    • @JPK:打开一个新问题来描述您的确切问题,然后我可以详细说明。
    • 我不相信这个答案是正确的。问题陈述“多对多”......我很确定这个建议只会在这里工作存在一对多关系,因此当通过每个 EntityB 访问您的 EntityA 时,只有一个 EntityA已返回...有人可以确认吗?
    • @DuncanBabbage 如果您最终创建了自己的问题,请将指向它的链接通过电子邮件发送给我(cimgf dot com 上的马库斯),以便我确保查看它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多