也就是说,我有一个与实体B有多对多关系的实体A.除其他属性外,B实例还有一个creationDate。而且我在内存中也已经有了A的托管对象。
所以我知道我可以通过A的访问者访问所有B实例。但是我想做一些事情:
“对于A.relationshipName中的所有B,返回具有最新B.creationData的B的托管对象”
我怎么能这样做?
答案 0 :(得分:1)
如何执行其他获取请求:
假设一对多方面的关系名称为a
// 1
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"B"
inManagedObjectContext:self.managedObjectContext];
fetchRequest.entity = entity;
// 2
fetchRequest.fetchLimit = 1;
// 3
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"self.a = %@", previouslyFetchedAObject];
// 4
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"creationDate"
ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
fetchRequest.sortDescriptors = sortDescriptors;
用简单的英语
答案 1 :(得分:0)
或者,由于您已在内存中拥有托管对象A,因此您可以对A->> B关系进行内存中过滤排序。
A *inMemoryA = ...
id byDate = [NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES];
id sorters = [NSArray arrayWithObjects:byDate, nil];
NSArray *sortedBs = [inMemoryA allBs] sortedArrayUsingDescriptors:sorters];
B *mostRecentB = [sortedBs lastObject];