Я новичок в разработке iOS, и у меня мокрые ноги в Core Data. У меня есть приложение, которое я медленно собираю вместе (спасибо за помощь с этого сайта!), Но я зациклился на том, как получать данные.Извлечение определенных данных из выбранной записи
Приложение:
Мое приложение состоит из двух основных экранов, как UITableViews: A «Класс List» вид, где они могут добавлять новые классы, и «Добавить Моя модель данных имеет две сущности: курс (для класса) и Студент, со многими отношениями с Курсом-Студентом. Сейчас у меня это работает, так что, когда я нажимаю на класс в представлении «Список классов», меня берут в представление «Добавить учеников», где я могу добавить студенты в классе, но мой контролер результатов выборки возвращает всех учеников, которых я добавил. Мой вопрос: как мне отформатировать запрос на выборку в представлении «Добавить учеников» для извлечения только тех студентов, которые должны принадлежать этому классу? у меня есть прямо сейчас:
-(NSFetchedResultsController *) fetchedResultsController {
if (_fetchedResultsController !=nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"name" cacheName:nil];
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
Я предполагаю, что это что-то делать с предикатами, но я не получил, что далеко в моем обучении. Любая помощь вообще будет оценена по достоинству. Благодаря!
Но как указать курс, выбранный на предыдущем экране? –
Один из способов - добавить свойство «курс» ко второму контроллеру представления и установить значение в файле didSelectRowAtIndexPath или prepareForSegue или что-то еще, что вы используете для перехода ко второму контроллеру представления. (На самом деле это совсем другой вопрос.Если вы google для «set property в другом контроллере представления», вы найдете много информации.) –
Итак, вот моя подготовкаForSegue в представлении таблицы ClassList: if ([[идентификатор segue] isEqualToString : @ "showAddStudents"]) { AddStudentsTableViewController * addStudents = (AddStudentsTableViewController *) [segue destinationViewController]; NSIndexPath * indexPath = [self.tableView indexPathForSelectedRow]; Курс * selectedCourse = (курс *) [self.fetchedResultsController objectAtIndexPath: indexPath]; addStudents.currentCourse = selectedCourse; [addStudents setManagedObjectContext: self.managedObjectContext]; Где я могу отправить выбранную строку? –