我正在尝试制作NSInteger
的mutableCopy?但是,由于NSInteger
是不可变对象,因此不起作用。如果我没有对行变量进行mutableCopy,那么UIPickerView
会在选择一行时跳转到下一行。
这是我的代码:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component
{
if (pickerView == _frequencyPicker) {
[_detailTableViewController.currentAlarm.cycles replaceObjectAtIndex:0 withObject:[NSNumber numberWithInteger:row]];
[self.tableView reloadData];
} else {
int rowNumber = (int)row;
// -> mutableCopy
rowNumber++;
NSLog(@"%s:%d",__PRETTY_FUNCTION__,rowNumber);
[_detailTableViewController.currentAlarm.cycles replaceObjectAtIndex: withObject:[NSNumber numberWithInteger:row]];
[self.tableView reloadData];
}
}
答案 0 :(得分:2)
由于您使用的是NSInteger
,而不是NSNumber
,因此您可以在不声明和递增原始变量的情况下重写代码,如下所示:
[_detailTableViewController.currentAlarm.cycles
replaceObjectAtIndex:0
withObject:@(row+1)];
[self.tableView reloadData];
由于NSInteger
对于基本类型是typedef
,因此可变性注意事项不适用于此。