2015-06-14 95 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. –