2012-03-05 1 views
0

То есть у меня есть сущность A со многими отношениями с сущностью B. В экземплярах B есть среди других атрибутов createDate. И у меня также есть управляемый объект для A в памяти.как получить определенный управляемый объект B из отношения ко многим из A в B, основанный на одном из атрибутов B?

Так что я знаю, что могу получить доступ ко всем экземплярам B через Аксессуар А. Но я хотел бы сделать что-то вдоль линий:

«для всех Bs в A.relationshipName, вернуть управляемый объект для B с самым последним B.creationData»

Как я могу идти о Это?

ответ

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]; 
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. Сделайте новый запрос на выборку для B
  2. Установить лимит выборки, так что вы только вернуть 1 объект
  3. Установить предикат, который только отодвигается объекты, которые имеют отношение к уже принес объект
  4. Установить порядок убывания по дате, так что вы получите самые новые даты первого
Смежные вопросы