所以我直接从Core Data关系获得这个NSSet
对象。
这个NSSet
包含的对象都是同一个基础对象的子类(我们称之为RVSuperClass
,它本身就是NSManagedObject
的子类。)
我的最终目标是在UITableView中重新组合这些对象,其中每种对象(RVSuperClass
子类)将构成一个部分。
即使RVSuperClass
的子类不多(因此对象'种类'也不多),NSSet
(数百)中可能会有很多对象。因此, for in 循环不是我想要的。
有办法做到这一点吗?我对NSPredicate
不是很熟悉,但我想这是最好的方法吗?有没有办法直接在NSFetchedResultsController
?
答案 0 :(得分:2)
>
子类数不多
这样就可以让超类具有指示子类的属性。现在使用获取结果分组控制器的sectionNameKeyPath
是轻而易举的。
答案 1 :(得分:0)
由于我可以控制RVSuperClass的子类,所以我决定使用一个相对笨拙的解决方案,但这种解决方案不能很好地扩展,但在这种情况下它可以工作。
在viewDidLoad
中,对于RVSuperClass
的每个子类,我创建一个谓词:
[NSPredicate predicateWithFormat: @"self isKindOfClass: %@", [RVSubclassA class]];
使用filteredSetUsingPredicate:
并在其中添加NSSortDescriptor
,我将结果NSArray
添加到ivar NSMutableArray
,其中每个NSArray
将是tableview。
太糟糕了,如果我决定稍后添加NSPredicate
的子类,我将不得不修改此代码(并添加另一个RVSuperClass
)。