[__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];
}