簡體   English   中英

分配給'NSInteger'(又名'int')的整數轉換的不兼容指針

[英]incompatible pointer to integer conversion assigning to 'NSInteger' (aka 'int')

使用UISegmentedControl,我收到了標題中為此代碼的最后一行建議的錯誤。

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

speed聲明是NSInteger speed;

你能幫忙解決這個問題嗎?

您正在為NSInteger分配NSNumber *

請記住, NSArray存儲對象,而@1.25[NSNumber numberWithFloat:1.25]的簡寫

將其更改為

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

或者使用更好的語法

speed = speeds[sender.selectedSegmentIndex].integerValue;

此外,我想你想要的是speed是一個float ,而不是NSInteger 例如,您不能將1.25分配給NSInteger

這里的問題是objectAtIndex:返回一個id ,它不能分配給int ,因為@32會返回一個NSNumber ,它是一個objective-c類型。 用這個

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

floatValue ,具體取決於您的需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM