Ios swift和Objective-C中的CellForRowAtIndexPath

Ios swift和Objective-C中的CellForRowAtIndexPath,ios,objective-c,swift,uitableview,Ios,Objective C,Swift,Uitableview,当我遍历tableView中的所有单元格时,在Objective-C中: for (int i = 0; i < [_tableView numberOfRowsInSection:0]; i++) { UITableViewCell *cell = [_tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; cell.textLabel.text = @"change te

当我遍历tableView中的所有单元格时,在Objective-C中:

for (int i = 0; i < [_tableView numberOfRowsInSection:0]; i++) {
    UITableViewCell *cell = [_tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
    cell.textLabel.text = @"change text";
}

它崩溃了,并抛出了一个“无展开”错误。似乎只能在Swift中获得可见细胞,而在Objective-C中可以获得所有细胞。如何解释这一点?

行为是相同的。只是在目标C中,使用nil对象不会崩溃,而在Swift中则会崩溃

您可以通过检查Objective-C中的单元格是否为零并输入日志来验证这一点。在Swift中,为避免崩溃,请改用可选绑定


例如,如果let cell=tableView.cellFor….

则行为相同。只是在目标C中,使用nil对象不会崩溃,而在Swift中则会崩溃

您可以通过检查Objective-C中的单元格是否为零并输入日志来验证这一点。在Swift中,为避免崩溃,请改用可选绑定


例如,如果let cell=tableView.cellFor….

cellforrowatinexpath
仅在当前可见时返回单元格,这就是代码导致崩溃的原因。要遍历所有可见单元格,只需使用

for cell in tableView.visibleCells {
    // do something
}

cellforrowatinexpath
仅在当前可见时返回单元格,这就是代码导致崩溃的原因。要遍历所有可见单元格,只需使用

for cell in tableView.visibleCells {
    // do something
}

不应显式调用
cellforrowatinexpath
更改单元格文本标签。不应显式调用
cellforrowatinexpath
更改单元格文本标签。