如何使用带有魔法记录的setReturnsDistinctResults?

时间:2012-08-04 21:01:58

标签: ios core-data unique nsfetchedresultscontroller magicalrecord

我试图在名为“name”的实体属性上获得唯一结果。 为此,我正在使用带有NSFetchedResultsController的Magical Record 事情根本不起作用,我得到了所有结果,但它们并不是独特的结果。

我的代码使其成功:

- (NSFetchedResultsController *)fetchedResultsController
{
    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"custom == 0"];

    [_fetchedResultsController.fetchRequest setReturnsDistinctResults:YES];
    [_fetchedResultsController.fetchRequest setResultType:NSDictionaryResultType];
    [_fetchedResultsController.fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"name"]];


    _fetchedResultsController = [MyQuestion fetchAllSortedBy:@"name"
                                                   ascending:YES
                                               withPredicate:predicate
                                                     groupBy:nil
                                                    delegate:self];


    return _fetchedResultsController;
}

我也尝试使用本机NSFetchedResultsController方法(没有Magical Record),但是我得到的数据库是损坏的异常,可能是因为我仍然在应用代表上使用Magical Record初始化我的数据。

感谢您的帮助和支持!

1 个答案:

答案 0 :(得分:1)

在这种情况下,您要使用的技术是:

  1. 使用自定义选项
  2. 创建获取请求
  3. 让MagicalRecord接手后
  4. 因此,在nsmanagedobject上查找名为MR_requestAllSortedBy的类别方法:还有更多的请求助手,但这会让你朝着正确的方向前进。创建提取请求后,设置选项,例如setReturnsDistinctResults。然后,要将其发送回MagicalRecord帮助器/管道,您需要在本地副本中将MR_fetchController:... Method设为public。此方法采用获取请求和其他选项,并且还处理错误处理等。