[__NSArrayI removeObjectAtIndex:]: нераспознанный селектор, отправленный экземпляру

Я пытаюсь удалить строку по определенному индексу, но я получаю эту ошибку. Как показывает NSArray, но я использую NSMutableArray. Каким-то образом он принудительно приведен к типу.

Эти два массива объявлены глобально.

NSArray *contacts;
NSMutableArray *sortedContacts;

В методе cellForRowAtIndexPath я копирую NSMutableArray в NSArray, чтобы показать данные в строках, в противном случае напрямую, используя NSMutableArray, значения ключей пропущены.

contacts = [sortedContacts copy];

Это моя кнопка в строке, при ее нажатии я хочу удалить всю строку с данными.

-(void)CancelButtonClicked:(UIButton*)sender
{
    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
    [sortedContacts removeObjectAtIndex:indexPath.row];
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    [self.tableView reloadData];
}

2 ответа

Это просто простое решение. Если вы хотите удалить первый объект индекса массива, добавьте эту строку своего кода.

data = [[dicsResponse valueForKey:@"data"]mutableCopy];

[data removeObjectAtIndex:0];

Я нашел это решение. Скопируйте отсортированные договоры в NSMutableArray. После удаления объекта скопируйте измененный массив в исходный массив sortedcontacts.:)

  -(void)CancelButtonClicked:(UIButton*)sender
  {
     NSMutableArray *copy=[sortedContacts mutableCopy];
     CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
     NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];

    [copy removeObjectAtIndex:indexPath.row];
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
    [self.tableView reloadData];
    sortedcontacts=[copy mutableCopy];
  }
Другие вопросы по тегам