ios MagicalRecordsorting。 需要部分标题的列表

我有一个使用MagicalRecord访问的核心数据模型。 我使用这个代码来得到一个按类别sorting和分组的tableview:

frc = [ListActivity MR_fetchAllSortedBy:@"activityCategory,activityName" ascending:YES withPredicate:nil groupBy:@"activityCategory" delegate:nil]; 

生成的tableview如下所示:

在这里输入图像说明

在另一个视图中,我使用相同的数据,但是这次只需要一个由属性“activityCategory”表示的节标题列表。 我认为这是一件简单的事情,但并非如此。 这个代码,例如:

 frc = [ListActivity MR_fetchAllSortedBy:@"activityCategory" ascending:YES withPredicate:nil groupBy:nil delegate:nil]; 

产生这个:

在这里输入图像说明

相反,我想要的只是一个类别列表(单数),在第一个例子中提供了部分标题的属性。 我试了几个其他的configuration,但是意识到我只是把东西扔在墙上,看它是否会粘住。 MagicalRecord的文档与框架一样出色,可惜的是缺乏。

有人可以指点我的解决scheme吗?

谢谢!

我最好的猜测是你需要configuration你的获取请求多一点之前触发获取的结果控制器。 MagicalRecord使用命名约定,如果您更改查找请求,它将返回NSFetchRequest对象。 所以,对于你的情况,你需要类似的东西

 NSFetchRequest *request = [ListActivity MR_requestAllSortedBy:@"activityCategory" ascending:YES inContext:context]; [request setResultType:NSDictionaryResultType]; [request setReturnsDistinctResults:YES]; frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil]; [frc MR_performFetch]; 

您可能需要考虑拥有一个ListActivityCategory实体以及将该类别作为String存储在ListActivity

这样,您可以将所有返回的ListActivity对象都ListActivity “唯一”