分配给'NSInteger'(又名'int')的整数转换的不兼容指针

zer*_*rds 4 uisegmentedcontrol ios

使用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]];
}
Run Code Online (Sandbox Code Playgroud)

宣言speedNSInteger speed;.

你能帮忙解决这个问题吗?

Gab*_*lla 15

你要分配NSNumber *一个NSInteger.

请记住,NSArray存储对象,这@1.25是一个简写[NSNumber numberWithFloat:1.25]

将其更改为

speed = [[speeds objectAtIndex:[sender selectedSegmentIndex]] integerValue];
Run Code Online (Sandbox Code Playgroud)

或者使用更好的语法

speed = speeds[sender.selectedSegmentIndex].integerValue;
Run Code Online (Sandbox Code Playgroud)

另外我认为你想要的是speed一个float,而不是一个NSInteger.例如,您不能将1.25分配给a NSInteger.