如何将 setReturnsDistinctResults 与 Magical Record 一起使用?
Posted
技术标签:
【中文标题】如何将 setReturnsDistinctResults 与 Magical Record 一起使用?【英文标题】:How to use setReturnsDistinctResults with Magical Record? 【发布时间】:2012-08-04 21:01:57 【问题描述】:我正在尝试在名为“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 初始化我的数据。
【问题讨论】:
我不知道Magical Record,但是你的代码不能工作,因为你设置了_fetchedResultsController.fetchRequest
的属性之前你初始化_fetchedResultsController
!
【参考方案1】:
在这种情况下,您要使用的技术是:
-
使用您的自定义选项创建提取请求
之后让 MagicalRecord 接管
因此,在 nsmanagedobject 上查找名为 MR_requestAllSortedBy: 的类别方法。还有比这更多的请求助手,但这会让你朝着正确的方向前进。创建获取请求后,设置您的选项,例如 setReturnsDistinctResults。然后,要将其发送回 MagicalRecord 助手/管道,您需要在本地副本中公开 MR_fetchController:... 方法。该方法接受获取请求和其他选项,并且还处理错误处理等。
【讨论】:
以上是关于如何将 setReturnsDistinctResults 与 Magical Record 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章