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,你會得到結果嗎? –