我在猜測我們應該傾向於使用不可變數組作爲UITableView
使用的數據模型陣列。關於這一點的讀物在互聯網上是非常不同的。我會說,這可以防止在tableview顯示數據時修改數組。例如,如果發生上述情況,numberOfRowsInSection:
方法可能會產生問題,對(即使我知道它在理論上是可行的,我仍然無法真正想到情況如何在真實世界中發生這種情況)?更新UITableView使用的數據模型陣列的正確方法
現在,在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
是不可變的。
現在我有兩個問題......國際海事組織(糾正我,如果我錯了),在上面的方法從兩個方面從數組中刪除對象具有相同的效果。消息數組最後刪除了一個元素。就是這樣......但是像後一個例子那樣做,可以讓我擁有不可變的數據模型數組。
有人可以評論什麼實際上是一個首選的方式(或我可以說正確的方式?)以更新數據模型數組後刪除?
它實際上已經是私人了......我更擔心在哪些情況下可能會發生一些混亂,如果我保持它可變...... – Whirlwind
如果更改數組,無論可變性如何,表視圖必須用它來更新,否則你會看到不好的數據並可能崩潰(例如,當你滾動到結尾時索引超出界限的錯誤) – beyerss