我有一个NSFetchRequest,它以NSDictionaryResultType返回对象的属性。是否还可以在此字典中获取对象的ObjectId?否则,我将需要使用NSManagedObjectResultType的返回类型运行查询,这对于大量返回的项目来说要慢得多。

最佳答案

是的,您可以使用非常漂亮但记录不佳的NSExpressionDescription类。您需要向通过NSExpressionDescriptionNSPropertyDescription设置的setPropertiesToFetch:对象数组中添加正确配置的NSFetchRequest对象。

例如:

NSExpressionDescription* objectIdDesc = [[NSExpressionDescription new] autorelease];
objectIdDesc.name = @"objectID";
objectIdDesc.expression = [NSExpression expressionForEvaluatedObject];
objectIdDesc.expressionResultType = NSObjectIDAttributeType;

myFetchRequest.propertiesToFetch = [NSArray arrayWithObjects:objectIdDesc, anotherPropertyDesc, yetAnotherPropertyDesc, nil];
NSArray* fetchResults = [myContext executeFetchRequest:myFetchRequest error:&fetchError];

然后,您应该在从获取请求中获取的字典中有一个@"objectID"键。

关于iphone - 核心数据,当NSFetchRequest返回NSDictionaryResultType时如何获取NSManagedObject的ObjectId?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3956406/

10-15 09:38