关闭。这个问题是opinion-based .它目前不接受答案。
想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.
4年前关闭。
Improve this question
我猜我们应该倾向于对 UITableView
使用的数据模型数组使用不可变数组。 .关于这方面的阅读在互联网上是非常不同的。我想说这可以防止在 tableview 显示数据时修改数组。例如,numberOfRowsInSection:
如果发生上述情况,方法可能会出现问题,对吧(即使我知道理论上可行,我仍然无法真正想到在现实世界中如何发生这种情况)?
现在,在 commitEditingStyle:forRowAtIndexPath:
方法,我正在这样做(messagesArray 是可变的):
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
Message *message = messageArray[indexPath.row];
[messagesArray removeObject:message];
[self.messageTable deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
而不是(具有
messagesArray
不可变的): NSMutableArray *temp = [NSMutableArray arrayWithArray:messagesArray];
[temp removeObject:message];
messagesArray = [NSArray arrayWithArray:temp];
如果
messageArray
是不可变的。现在我有两个问题...... IMO(如果我错了,请纠正我),在上述方法中以两种方式从数组中删除一个对象具有相同的效果。 messagesArray 最终删除了一个元素。就是这样......但是像在后一个示例中那样做的事情,允许我拥有不可变的数据模型数组。
有人可以评论在删除单元格后更新数据模型数组的实际首选方式(或者我可以说正确的方式?)吗?
最佳答案
我希望有一个可变数组,但将其设为私有(private)。然后,如果另一个类需要更改数组,您可以提供 add()
方法和 delete()
方法。两者都将负责更新数组和 TableView 。
关于ios - 更新 UITableView 使用的数据模型数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44179607/