我有一个NSFetchRequest
,它以NSDictionaryResultType
返回对象的属性。是否还可以在此字典中获取对象的ObjectId?否则,我将需要使用NSManagedObjectResultType
的返回类型运行查询,这对于大量返回的项目来说要慢得多。
最佳答案
是的,您可以使用非常漂亮但记录不佳的NSExpressionDescription
类。您需要向通过NSExpressionDescription
为NSPropertyDescription
设置的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/