Core data (核心数据)获取具有max属性的特定实体
我有一个实体,它和另一个实体有很多关系。在第二个示例中,我有一个名为“versionNumber”的属性。我在实体类型A上有一个对象,我想得到具有最大(max)版本号的相关实体B 我有以下内容,但返回的结果是实体B上所有记录的结果,而不是与类型a的对象相关的特定实体的结果Core data (核心数据)获取具有max属性的特定实体,core-data,Core Data,我有一个实体,它和另一个实体有很多关系。在第二个示例中,我有一个名为“versionNumber”的属性。我在实体类型A上有一个对象,我想得到具有最大(max)版本号的相关实体B 我有以下内容,但返回的结果是实体B上所有记录的结果,而不是与类型a的对象相关的特定实体的结果 NSInteger vNumber = 0; NSFetchRequest *request = [[NSFetchRequest alloc] init]; NSEntityDescription *entity =
NSInteger vNumber = 0;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:DPA_VERSION_KEY inManagedObjectContext:[self managedObjectContext]];
[request setEntity:entity];
// Specify that the request should return dictionaries.
[request setResultType:NSDictionaryResultType];
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:VERSION_NUMBER_KEY];
NSExpression *maxNumberExpression = [NSExpression expressionForFunction:@"max:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"maxNumber"];
[expressionDescription setExpression:maxNumberExpression];
[expressionDescription setExpressionResultType:NSDecimalAttributeType];
[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];
// Execute the fetch.
NSError *error = nil;
NSArray *objects = [[self managedObjectContext] executeFetchRequest:request error:&error];
if (objects == nil) {
// Handle the error.
}
else {
if ([objects count] > 0) {
vNumber = [[[objects objectAtIndex:0] valueForKey:@"maxNumber"] integerValue] +1;
}
}
[expressionDescription release];
[request release];
return vNumber;
我有一个想法,但我没能实现它。我必须问SELF,哪个是我的对象A,来获取它与版本(实体B)的关系。
谢谢你的帮助
G.设置一个谓词,将请求仅限于与a有关系的B对象
[request setPredicate:[NSPredicate predicateWithFormat:@"myA == %@", myA];
嗯,当然,没问题。