NSFetchRequest与Change Track不同

时间:2013-06-12 12:24:05

标签: ios objective-c core-data nsfetchedresultscontroller nsfetchrequest

我正在使用NSFetchRequestCore Data返回数据,我的问题是我有多个对象被返回时使用相同的唯一键,我想将它们组合在一起以显示每个唯一值的一个单元格在我的表视图中。我了解无法使用setReturnsDistinctResults:YES并保留“更改跟踪”

所有这一切的目的是显示按mesg_conv_unique值分组的消息列表。然后,用户可以选择转到我已设置的留言板视图。这是通过解析视图的唯一键来完成的,该工作正常。

到目前为止我的代码。

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"message"
                                          inManagedObjectContext:self.managedObjectContext];


[request setEntity:entity];
[request setFetchBatchSize:100];
[request setPredicate:nil];
[request setReturnsDistinctResults:YES];
[request setResultType:NSDictionaryResultType];
[request setPropertiesToFetch:@[@"mesg_conv_unique"]];

任何人都可以建议一种方法来做到这一点,同时仍然保留“改变轨道”或者我可以实现目标的另一种方法吗?

1 个答案:

答案 0 :(得分:-1)

解决方案是在这里使用部分:

NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                                               managedObjectContext:self.managedObjectContext
                                                                                                 sectionNameKeyPath:@"mesg_conv_unique"
                                                                                                          cacheName:nil];

在...中

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
    id items = [self.fetchedResultsController.sections objectAtIndex:section];
    return [items numberOfObjects];
}