Неверный селектор отправлен на экземпляр - PullRequest
0 голосов
/ 29 марта 2012

Я создаю приложения для учителей, которые будут хранить курсы и студентов, а также отслеживать оценки. Прямо сейчас это настроено в модели данных, которая хранит курсы в массиве. Курсы являются объектами, которые включают в себя множество студентов и заданий. У меня есть таблица всех курсов, которые переходят на таблицу студентов. В подробном представлении курсов у меня есть ячейка табличного вида, которая переходит к третьему табличному виду для назначений. Моя проблема происходит здесь. Когда я пытаюсь добавить назначение в табличное представление, я получаю ошибку: «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]; 
}

}

1 Ответ

2 голосов
/ 29 марта 2012

Объект, который вы сохранили в свойстве assignments, является экземпляром NSArray, который является неизменным.Вам нужно, чтобы это был экземпляр NSMutableArray.Вот почему addObject: является нераспознанным селектором - это метод, который существует в NSMutableArray, но не в NSArray, и ваш код отправляет его в экземпляр NSArray.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...