在核心数据NSFetchedResultsController中仅显示唯一结果

时间:2013-07-16 13:57:30

标签: ios core-data nsdictionary

我希望仅显示核心数据获取请求的唯一结果。目前我从研究中看到,使用NSDictionaryResultType可以实现这一目标,但我一直在努力使其发挥作用。

我确实尝试使用以下内容,但无法将其正确地集成到我的班级中。我不是100%确定在NSArray *distincResults后放置未使用的变量:

     NSFetchRequest *request = [[NSFetchRequest alloc] init];
 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Routines" inManagedObjectContext:managedObjectContext];
 request.entity = entity;
 request.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"routinename"]];
 request.returnsDistinctResults = YES;
 request.resultType = NSDictionaryResultType;

 NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"routinename" ascending:YES];
 [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

 NSError *error = nil;
 NSArray *distincResults = [managedObjectContext executeFetchRequest:request error:&error];
 // Use the results

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您使用NSDictionaryResultType,则无法使用FRC代理来监视更改。如果可以,你可以走这条路。

一旦你有了一个字典数组(distinctResults),就把它作为你的表视图的数据数组。因此,例如,在cellForRowAtIndexPathconfigureCell中,使用

cell.textLabel.text = distinctResults[indexPath.row][@"routinename"];

这是

的缩写形式
cell.textLabel.text = [[distinctResults objectAtIndex:indexPath.row] 
                          objectForKey:@"routinename"];