2015-06-14 138 views
-2

我试图做一个NSInteger的mutableCopy?但是,由于NSInteger是不可变的对象,因此不起作用。如果我不制作行变量的mutableCopy,UIPickerView在选择一行时跳转到下一行。NSInteger的mutableCopy

这里我的代码:

- (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]; 
    } 
} 
+4

NSInteger根本不是一个对象,它是一个像int这样的原始数据类型,我不明白你想要做什么 –

+0

我认为他想让rowNumber和row指向相同的整数 – luk2302

回答

2

由于您使用NSInteger,不NSNumber,你可以重写你的代码不宣而递增基本变量,就像这样:

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

由于NSInteger是对于原始类型,typedef,可变性考虑在这里不适用。

+0

我得到警告:不兼容指向整数转换的指针将'NSNumber *'发送到'NSInteger'类型的参数(aka int) –

+0

@JavedGeorge你发送给'replaceObjectAtIndex:'参数而不是零? – dasblinkenlight

+0

哦!我要发送1. –