gpt4 book ai didi

ios - 更新 UITableView 使用的数据模型数组的正确方法

转载 作者:行者123 更新时间:2023-12-01 19:53:29 25 4
gpt4 key购买 nike

关闭。这个问题是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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com