Xcode,iPhone SDK中的错误处理

Wri*_*sCS 2 iphone error-handling xcode uitableview

在Visual Basic中,可以使用一行代码来处理代码中的错误

"On Error Resume Next"
Run Code Online (Sandbox Code Playgroud)

Objective-C中有类似的东西吗?我的问题是我有一个"添加新单元格"添加按钮,在运行时创建一个新单元格.但是,细胞是可以重新订购的.当您尝试重新排序"添加新单元格"单元格时,我得到索引超出范围错误.如果我可以修复发生错误的错误,但是如果有错误处理程序我可以用来在出现错误时退出移动函数,那也很酷.

这是我的moveRowAtIndexPath代码:

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
    iProfileAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    [appDelegate moveFromOriginal:fromIndexPath.row toNew:toIndexPath.row];
}
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (7) beyond bounds (7)'
Run Code Online (Sandbox Code Playgroud)

ger*_*ry3 5

这是一个数组边界错误,应该修复.

您是否尝试阻止用户移动"添加新单元格"单元格?

为此,请实现tableView:canMoveRowAtIndexPath:并为"Add New Cell"单元格行返回NO(所有其他行为YES).

  • 这很常见.您应该跟踪有多少行.通常,数据行保存在一个数组中,行数为[dataArray count] + 1,其中1表示非数据行的数量,例如"Add New Cell"行.在tableView:canMoveRowAtIndexPath中,您将检查indexPath.row是否为[dataArray count](最后一行的索引)并仅返回该行的NO(因此无法移动). (2认同)