获取返回coredata URL的请求。为什么?以及如何访问托管对象?

时间:2014-01-07 11:17:49

标签: ios objective-c core-data

我必须执行“复杂”获取请求才能实现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?

1 个答案:

答案 0 :(得分:3)

尝试使用managedObjectIDForURIRepresentation:上的NSPersistentStoreCoordinator将URI转换为NSManagedObjectID。获得托管对象ID后,您可以使用objectRegisteredForID:上的NSManagedObjectContext