У меня есть две сущности.Клиент и Проект.У клиента много проектов, но проект может быть назначен только одному клиенту.Это было разработано с помощью модели данных.
- Сущность клиента имеет атрибут clientName и отношение ко многим проектам
- Сущность проекта имеет атрибут projectName и отношение к одному client
Я хочу получить всех клиентов из моего ManagedObjectContext, где клиенты сортируются по clientName по возрастанию, а затем иметь проекты для этого клиента по projectName по возрастанию.
Это мой текущий код, где я ЗНАЮ, что это неправильно, так как для клиента нет способасущность для сортировки по имя_проекта :
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
// Creating the sort descriptors array.
NSSortDescriptor *clientSort = [[NSSortDescriptor alloc] initWithKey:@"clientName" ascending:YES];
// this next row is super wrong
NSSortDescriptor *projectSort = [[NSSortDescriptor alloc] initWithKey:@"projectName" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:clientSort. projectSort, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSError *error;
// Assign to NSArray of ViewController
clientArray = [[managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
После того, как это было присвоено clientArray
, я хочу перейти к другому методу и попросить проекты и иметь их в порядке возрастания,Пример:
Client *temp = (Client *)[clientArray objectAtIndex:selectedClient];
NSArray *projectsArray = [temp.projects allObjects];
Project *project = [projectsArray objectAtIndex:selectedProject];
return project.projectName;
Я видел реализацию, где они получали клиентов, а затем сортировали проекты вручную ... Но это довольно дорого, и я надеюсь, что есть функции, которые делают это, когда получает контекстопрашивается.