A->> B
我有两个实体A&B,每个实体都是一对多的关系。我正在尝试通过分组访问特定的B属性值和所有A实体属性。但是我收到错误消息[_NSObjectID_48_1 userName]
:当我尝试访问B(即a)的关系对象时,无法识别的选择器发送到实例。
NSManagedObjectContext *context = [[SamCoreDataHelper sharedInstance] managedObjectContext];
NSFetchRequest *fr = [[NSFetchRequest alloc] initWithEntityName:@"B"];
NSError *error;
NSExpressionDescription *total = [[NSExpressionDescription alloc] init];
[total setExpression:[NSExpression expressionWithFormat:@"@sum.marks"]];
[total setName:@"total"];
[total setExpressionResultType:NSDecimalAttributeType];
[fr setPropertiesToFetch:[NSArray arrayWithObjects:@"subject",@"a", total, nil]];
[fr setPropertiesToGroupBy:[NSArray arrayWithObjects:@"subject", @"a", nil]];
[fr setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObject:@"a"]];
fr.returnsObjectsAsFaults = NO;
[fr setResultType:NSDictionaryResultType ];
NSArray *resultArray = [context executeFetchRequest:fr error:&error];
for (NSDictionary *result in resultArray) {
NSNumber *total = [result valueForKey:@"total"];
NSString *subject = [result valueForKey:@"subject"];
A *a = [result objectForKey:@"a"];
NSLog(@"%@", a.useName);// Here I am getting error as **[_NSObjectID_48_1 userName]: unrecognized selector sent to instance**
}
NSManagedObject
当的结果NSFetchRequest
设置为时,您将收到“对象ID”,而不是相对对象的实例NSDictionaryResultType
。
因此,您需要“通过对象ID”来获取它:
A * a = (A*)[ managedObjectContext objectWithID:[result valueForKey:@"a"]];
NSLog("%@",a.userName );
UPD:
fr.returnsObjectsAsFaults = NO;
这里没有用,因为返回类型是NSDictionaryResultType
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句