在我的UITableView中,每个单元格都有一个自定义UISwitch。我将交换机信息保存在NSMutableArray中,目的是在用户更改为其他表时使用它来保存状态信息。
为此,我需要获取单元格的行信息,以便我可以在NSMutableArray中翻转相应的“YES”或“NO”。我试图这样做:
UICustomSwitch *temp = (UICustomSwitch *)sender;
UITableViewCell *cell = (UITableViewCell *)temp.superview;
NSIndexPath *path = [self.tableView indexPathForCell:cell];
此后我有
NSLog(@"Path was: %@", path);
现在,当我输出路径时,我会得到类似的内容:
Path was: <NSIndexPath 0x4b25590> 2 indexes [0, 1]
但是,当我将NSlog更改为path.row时,程序崩溃了。我没有找到原因,我也在其他地方使用path.row。任何人都可以帮忙解释为什么会这样吗?
编辑:
例如,当我这样做时:
NSLog(@"Path was: %d", path.row);
它崩溃了。
答案 0 :(得分:2)
NSIndexPath.row
返回纯无符号整数(NSUInteger
),而不是对象,因此您需要将NSLog
格式说明符更改为%@
到{{ 1}}。通过使用%u
,它使用整数作为内存地址,这很可能指向一些根本不是对象的内存。
答案 1 :(得分:0)
你有没有尝试过:
NSLog(@"Path was: %@", path.row);
? path.row
的类型为NSUInteger
。您可以使用'%d'代替'%@'。
答案 2 :(得分:0)