0
考虑以下核心数据实体:核心数据:GROUP BY和计算结果返回空列表
人 - PERSONID:NSNumber的,名:的NSString,位置:NSString的
使用核心数据,我试图复制以下SQL查询:
SELECT `position`, COUNT(*) FROM `Person` GROUP BY `position`
下面是objective-c等价物:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person"]
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath: @"position"];
NSExpression *countExpression = [NSExpression expressionForFunction:@"count:" arguments:@[keyPathExpression]];
NSAttributeDescription *positionDescription = [entity.attributesByName objectForKey:@"position"];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"count"];
[expressionDescription setExpression:countExpression];
[expressionDescription setExpressionResultType:NSInteger32AttributeType];
[request setPropertiesToFetch:@[positionDescription, expressionDescription]];
[request setPropertiesToGroupBy:@[positionDescription]];
[request setResultType: NSDictionaryResultType];
NSError *error = nil;
NSArray *results = [context executeFetchRequest: request error: &error];
Person实体绝对填充,然而,执行上面的代码的情况下,results
数组为空。思考?
你得到一个*空阵列*或*无*?如果你得到零,那么错误变量应该包含一些信息。 –
这是一个空数组。 – krisk
您在执行请求之前*保存了*对象吗?具有NSDictionaryResultType的提取请求仅返回存储文件中的对象。 - 如果你省略了setPropertiesToGroupBy,你会得到结果吗? –