多个组核心数据

时间:2012-05-29 18:43:01

标签: iphone objective-c core-data group-by

我正在使用Core Data来检索一些数据。如何将此类SQL语句转换为核心数据?

SELECT bus, direction from BUSES where latitude > 58.00 and longitude < 34.00 group by bus, direction

换句话说,我喜欢按BUS和DIRECTION分组,但有一个WHERE CLAUSE。

我尝试过使用此代码:

request.propertiesToFetch = [NSArray arrayWithObjects:@"bus", @"direction", nil];
request.returnsDistinctResults = YES;
request.resultType = NSDictionaryResultType;

问题是,如果我只检索公交车和方向,我就不能像这样设置一个经度和经度的NSPredicate:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(lat > 58) AND (lat < 34)"];
[fetchRequest setPredicate:predicate];

我猜核心数据只是检索总线和方向,这就是NSPredicate无法正常工作的原因。

1 个答案:

答案 0 :(得分:1)

核心数据不是SQL。事实上,它甚至不必使用SQLite作为持久存储。

我总是建议您考虑一下您在模型中定义的实体和关系方面要解决的问题(而不是考虑如何在SQL中执行此操作)。

我建议您使用普通的提取请求(不要指定propertiesToFetch)来获取所需的对象,然后自己对它们进行分组。

如果您只对一个属性感兴趣,可以在完整对象数组上使用valueForKey:来快速获取这些值的数组。例如:

NSArray *busses = [objects valueForKey:@"bus"];