我必须执行“复杂”获取请求才能实现group by
操作。
在这个请求中,我需要获得2个值,其中一个是关系,而不是属性。
这里是创建此请求的代码:
// Create the request
NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Entry"];
// Create Sum Expression
NSExpression *ex = [NSExpression expressionForFunction:@"sum:"
arguments:[NSArray arrayWithObject:
[NSExpression expressionForKeyPath:@"amount"]]];
NSExpressionDescription *ed = [[NSExpressionDescription alloc] init];
[ed setName:@"totalAmount"];
[ed setExpression:ex];
[ed setExpressionResultType:NSInteger64AttributeType];
// Add properties and group by
[request setPropertiesToFetch:@[ed,THERELATIONSHIP]]; // properties
[request setResultType:NSDictionaryResultType]; // result type
[request setPropertiesToGroupBy:THERELATIONSHIP]; // group by
通过此请求,我正确获取按NSExpression
分组的THERELATIONSHIP
值。使用获取的请求,此关系用表示,带有URL (我想这是因为我通过`setResultType强制结果为NSDictionary。
问题1:你能证实这个理论是正确的吗?)
网址格式为:
0x8db2c60 <x-coredata://F1C06CE8-E610-4207-A388-1FDB8FFA8A2F/THERELATIONSHIP/p1>
问题2:如何从此网址访问ManagedObject?
答案 0 :(得分:3)
尝试使用managedObjectIDForURIRepresentation:
上的NSPersistentStoreCoordinator
将URI转换为NSManagedObjectID
。获得托管对象ID后,您可以使用objectRegisteredForID:
上的NSManagedObjectContext
。