2
这段代码会导致错误,但它应该是正确的。将NSNumber对象添加到NSMutableArray
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSNumber *rowNumber = [[NSNumber alloc] initWithInt:indexPath.row];
[genreArray addObject:rowNumber];
[self.tableView reloadData];
}
genreArray
是NSMutableArray
但对一个cell触摸我得到这个错误
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
*** First throw call stack:
(0x1c9c012 0x10d9e7e 0x1c9bdeb 0x1d1c9a5 0x1d1c8b0 0x7b4c 0xcd285 0xcd4ed 0xad75b3 0x1c5b376 0x1c5ae06 0x1c42a82 0x1c41f44 0x1c41e1b 0x1bf67e3 0x1bf6668 0x1dffc 0x271d 0x2645)
libc++abi.dylib: terminate called throwing an exception
有没有人有一个想法,为什么这是不工作?
做除了答案简单,你可以改变' NSNumber * rowNumber = [[NSNumber alloc] initWithInt:indexPath.row];'带'NSNumber * rowNumber = @(indexPath.row);' – graver
你分配了genreArray = [[NSMutableArray alloc] init];' – laxonline
问题是我把它分配为NSMutableArray,但后来我写道:genreArray = someOtherArray; someOtherArray是一个数组,而不是一个可变数组。现在我分配它[NSMutableArray arrayWithArray:someOtherArray];这样可行! – Wed