[__NSArrayI removeObjectAtIndex:]:发送到实例的无法识别的选择器

时间:2015-09-28 11:55:46

标签: ios objective-c nsarray unrecognized-selector

我正在尝试删除特定索引处的行但是我收到此错误。因为它显示了NSArray但我使用的是NSMutableArray。不知何故,它是强制类型铸造。

这两个数组是全局声明的。

NSArray *contacts;
NSMutableArray *sortedContacts;

在cellForRowAtIndexPath方法中,我在NSArray中复制NSMutableArray以在行中显示数据,否则直接使用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 个答案:

答案 0 :(得分:0)

我找到了这个解决方案。复制NSMutableArray中的sortedconacts。之后,删除对象,将修改后的数组复制到原始的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];
  }

答案 1 :(得分:0)

它只是简单的灵魂如果你想删除数组索引的第一个对象而不是添加你的代码行。

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

[data removeObjectAtIndex:0];