Некоторые проблемы с сортировкой (Core Data новичок) - PullRequest
1 голос
/ 27 августа 2010

Может быть, есть простое решение для этого, но у меня болит голова, я довольно новичок со всеми этими базовыми данными:

У меня есть класс / сущность BankAccount с индексом "атрибут, используемый для сортировки, и отношение «транзакции» ко многим с классом / сущностью транзакции.У этой сущности Transaction есть атрибут «date», который я тоже хочу использовать для сортировки.

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"BankAccount" inManagedObjectContext:self.managedObjectContext]];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];

Это работает хорошо и доставляет мне объекты BankAccount, хорошо отсортированные по «index».Но каждый объект BankAccount содержит NSSet «транзакции», которые, конечно, не сортируются вообще.Как можно отсортировать эти транзакции по атрибуту «дата», и возможно ли это в рамках одного запроса на выборку?

Заранее большое спасибо.

1 Ответ

1 голос
/ 27 августа 2010

Для этого вам нужно получить заказанные транзакции.

Вам потребуется:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Transaction"
                                    inManagedObjectContext:self.managedObjectContext]]; 
[fetchRequest setPropertiesToFetch :[NSArray arrayWithObjects:@"date", @"bankAccount", nil]];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:
                                  [[[NSSortDescriptor alloc] initWithKey:@"date"
                                                               ascending:YES
                                                                selector:@selector(compare:)] autorelease],
                                  [[[NSSortDescriptor alloc] initWithKey:@"bankAccount.index"
                                                               ascending:YES] autorelease],
                                  nil]];

Я предполагаю, что Transaction - это имя объектадля транзакций, и что bankAccount является отношением от сущности Transaction к BankAccount.

...