【发布时间】:2012-12-18 00:24:51
【问题描述】:
我有一个看起来像这样的模型:
并希望使用NSFetchedResultsController 在UITableView 中显示它。我想列出给定Owner 的所有Objects,按Group 分组。例如,如果我们要查看某个 Owner Owner A 的组,表格视图可能如下所示:
Group A
Object A
Object B
Object C
Group B
Object A
Object D
Group C
Group D
Object C
Object E
同样重要的是,组按其name 属性(未在上面的架构中显示)排序,并且每当对象被修改或从组中添加/删除时调用NSFetchedResultsController 委托方法。
鉴于这些要求,我设置了NSFetchedResultsController 来获取一堆Objects,其谓词类似于[NSPredicate predicateWithFormat:@"ANY groups.owner = %@", someOwner],这会引发NSInvalidArgumentException 异常:“此处不允许多对多键”。我尝试了其他一些谓词,但都卡住了。
有什么建议吗?这不是我应该使用NSFetchedResultsController 的东西吗?还是有更好的方法来为我的数据建模?
谢谢!
编辑:我实际上得到了使用上述代码的谓词,我的错误在于我的sectionNameKeyPath 参数。我试图传入groups.name,这是产生错误的原因。我可以理解为什么这种方式行不通,但我正在努力寻找一种不同的方式来实现预期的结果。也许是一个连接对象?
编辑 2: 这对于像这样的连接对象有点效果:
我现在看到了两个缺点。首先是我必须自己使用代码强制执行唯一性。这很容易,但有点麻烦。第二个缺点,我还没有看到解决办法,是NSFetchedResultsController 不会再调用它的代表来更新Objects。我现在可以忍受这个缺点,但很高兴听到更好的建议。
【问题讨论】:
标签: objective-c ios core-data nspredicate nsfetchedresultscontroller