Я создаю приложения для учителей, которые будут хранить курсы и студентов, а также отслеживать оценки. Прямо сейчас это настроено в модели данных, которая хранит курсы в массиве. Курсы являются объектами, которые включают в себя множество студентов и заданий. У меня есть таблица всех курсов, которые переходят на таблицу студентов. В подробном представлении курсов у меня есть ячейка табличного вида, которая переходит к третьему табличному виду для назначений. Моя проблема происходит здесь. Когда я пытаюсь добавить назначение в табличное представление, я получаю ошибку: «NSInvalidArgumentException», причина: «- [__ NSArrayI addObject:]: нераспознанный селектор, отправленный экземпляру 0x6b38620» ..
Вот код, который, я считаю, может содержать проблему.
Контроллер подробного просмотра курса:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"AssignmentTable"]) {
AssignmentViewController *controller = segue.destinationViewController;
controller.checklist = checklistToEdit;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row == 2)
{
[self performSegueWithIdentifier:@"AssignmentTable" sender:checklistToEdit];
}
}
Назначение просмотра контроллера:
- (void)editAssignmentViewController:(EditAssignmentViewController *)controller didFinishAddingItem:(Assignment *)item
{
int newRowIndex = [self.checklist.assignments count];
[self.checklist.assignments addObject:item];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:0];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
[self dismissViewControllerAnimated:YES completion:nil];
}
Контроллер представления сведений о назначении:
- (IBAction)done
{
if (assnToEdit == nil) {
Assignment *item = [[Assignment alloc] init];
item.texta = self.textFielda.text;
[self.delegate editAssignmentViewController:self didFinishAddingItem:item];
} else {
self.assnToEdit.texta = self.textFielda.text;
[self.delegate editAssignmentViewControllerDidCancel:self];
}
}