0

我正在尝试在名为“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 初始化我的数据。

4

1 回答 1

1

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

  1. 使用您的自定义选项创建获取请求
  2. 之后让 MagicalRecord 接管

因此,在 nsmanagedobject 上寻找一个名为 MR_requestAllSortedBy: 的类别方法。还有比这更多的请求助手,但这会让你朝着正确的方向前进。创建获取请求后,设置您的选项,例如 setReturnsDistinctResults。然后,要将其发送回 MagicalRecord 助手/管道,您需要在本地副本中公开 MR_fetchController:... 方法。此方法接受获取请求和其他选项,还处理错误处理等。

于 2012-08-10T15:17:49.060 回答