2013-06-22 98 views
4

使用UISegmentedControl時,我在標題中爲該代碼的最後一行提示了錯誤。指向'NSInteger'(又名'int')的整數轉換不兼容指針

- (IBAction)segmentAction:(id)sender 
{ 
    //NSLog(@"segmentAction: selected segment = %d", [sender selectedSegmentIndex]); 
    NSArray *speeds = @[@1.25, @1.5, @2.0]; 
    speed = [speeds objectAtIndex:[sender selectedSegmentIndex]]; 
} 

的聲明speedNSInteger speed;

您能幫助解決提出的問題嗎?

+1

'[speeds objectAtIndex:[sender selectedSegmentIndex]]'是'NSNumber *'。 –

回答

13

您正在爲NSInteger分配NSNumber *

記住NSArray 4S店的對象和@1.25[NSNumber numberWithFloat:1.25]

更改它的簡寫來

speed = [[speeds objectAtIndex:[sender selectedSegmentIndex]] integerValue]; 

或有更好的語法

speed = speeds[sender.selectedSegmentIndex].integerValue; 

而且我認爲,你想要的是speed是一個float,而不是一個NSInteger。例如,您不能將1.25分配給NSInteger

3

的這裏的問題是,objectAtIndex:返回id,不能分配給int,因爲@32將返回一個NSNumber,這是一個Objective-C型。使用這個

[[speeds objectAtIndex:[sender selectedSegmentIndex]] integerValue] 

floatValue,這取決於你需要什麼。

相關問題