我必须执行“复杂”的提取请求才能实现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:您能否确认此理论是正确的?)
URL具有以下格式:
0x8db2c60 <x-coredata://F1C06CE8-E610-4207-A388-1FDB8FFA8A2F/THERELATIONSHIP/p1>
问题2:如何从此URL访问ManagedObject?
最佳答案
尝试在managedObjectIDForURIRepresentation:
上使用NSPersistentStoreCoordinator
将URI转换为NSManagedObjectID
。一旦获得了管理对象ID,就可以在objectRegisteredForID:
上使用NSManagedObjectContext
。
关于ios - 提取请求,该请求返回coredata URL。为什么?以及如何访问托管对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20970224/