0

所以我有这个NSSet对象,直接来自核心数据关系。这NSSet包含的对象都是同一个基础对象的所有子类(我们称它为RVSuperClass,它本身就是 a 的子类NSManagedObject)。

我的最终目标是在 UITableView 中重新组合这些对象,其中每种对象(RVSuperClass子类)将组成一个部分。

即使没有很多子类(因此也没有很多对象“种类”),但在(数百个)RVSuperClass中可能有很多对象。NSSet因此,for in循环不是我所追求的。

有没有办法做到这一点?我不是很熟悉,NSPredicate但我想这将是最好的方法吗?有没有办法直接将结果传送到 a 中NSFetchedResultsController

4

2 回答 2

2

>子类不多

这将使超类具有指示子类的属性变得可行。现在与获取的结果控制器进行分组sectionNameKeyPath是一件轻而易举的事。

于 2013-08-17T18:07:52.483 回答
0

因为我可以控制我的 RVSuperClass 的子类,所以我决定采用一个相对笨拙的解决方案,它不能很好地扩展,但在这种情况下它可以工作。

viewDidLoad中,为 I 的每个子类RVSuperClass创建一个谓词:

[NSPredicate predicateWithFormat: @"self isKindOfClass: %@", [RVSubclassA class]];

使用filteredSetUsingPredicate:并在其中添加 a NSSortDescriptor,我将结果添加NSArray到 ivar NSMutableArray,其中每个都NSArray将是 tableview 的一部分。

NSPredicate太糟糕了,如果我决定稍后添加一个子类,我将不得不修改此代码(并添加另一个) RVSuperClass

于 2013-08-18T18:01:52.853 回答