0

我正在使用神奇的记录从核心数据中获取数据,使用代码:

- (NSFetchedResultsController *)fetchedResultsController {
    if (!_fetchedResultsController ) {
        _fetchedResultsController = [TagItem MR_fetchAllGroupedBy:nil withPredicate:nil  sortedBy:@"name" ascending:YES delegate:self];
    }

    return _fetchedResultsController;
}

问题是,它正在填充由另一个表视图控制器推送到的表视图控制器,所以基本上用户选择一个选项,将人带到数据列表,但选项中的数据特定于该选项。所以我想做的是只获取分配给该选项的数据,而不是简单地显示所有可用数据。我上面的方法只允许我获取所有数据,而不是根据选项选择特定的数据。选项中的数据作为一个实体被赋予选项本身的 objectId,从而提供了两者之间的关系。

所以我的问题是,如何使用神奇的记录根据特定实体获取数据?

更新

我尝试将谓词设置为特定值只是为了测试它是否有效,认为它与单独使用核心数据的工作方式相同,但我只是得到一个错误。

- (NSFetchedResultsController *)fetchedResultsController {
    if (!_fetchedResultsController ) {
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = test"];
        _fetchedResultsController = [TagItem MR_fetchAllGroupedBy:nil withPredicate:predicate  sortedBy:@"name" ascending:YES delegate:self];
    }



return _fetchedResultsController;

}

错误如下,即使我确定有一个存储名称为 test 的数据项,但它似乎不起作用。

'NSInvalidArgumentException',原因:'无法为谓词(名称 == 测试)生成 SQL(RHS 上的问题)'

4

1 回答 1

4

这就是withPredicate参数的用途:

NSPredicate *predicate = ... // predicate that filters the items to display
_fetchedResultsController = [TagItem MR_fetchAllGroupedBy:nil withPredicate:predicate ...];

例如,如果TagItempersonPerson具有一对一关系,则

Person *person = ...; // person selected in the first view controller
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"person = %@", person];
_fetchedResultsController = [TagItem MR_fetchAllGroupedBy:nil withPredicate:predicate ...];

将获取与该人相关的所有项目。

于 2013-08-12T14:13:50.317 回答