NSInteger的mutableCopy

时间:2015-06-14 12:09:15

标签: ios objective-c uipickerview nsinteger

我正在尝试制作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];
    }
}

1 个答案:

答案 0 :(得分:2)

由于您使用的是NSInteger,而不是NSNumber,因此您可以在不声明和递增原始变量的情况下重写代码,如下所示:

[_detailTableViewController.currentAlarm.cycles
    replaceObjectAtIndex:0
    withObject:@(row+1)];
[self.tableView reloadData];

由于NSInteger对于基本类型是typedef,因此可变性注意事项不适用于此。