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

时间:2013-06-22 15:07:21

标签: ios uisegmentedcontrol

使用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;

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

2 个答案:

答案 0 :(得分:14)

您正在为NSNumber *分配NSInteger

请注意NSArray商店对象,而@1.25[NSNumber numberWithFloat:1.25]

的简写

将其更改为

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

或使用更好的语法

speed = speeds[sender.selectedSegmentIndex].integerValue;

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

答案 1 :(得分:3)

此处的问题是,objectAtIndex:会返回id,但无法将int分配给@32,因为NSNumber会返回[[speeds objectAtIndex:[sender selectedSegmentIndex]] integerValue] ,这是floatValue一个Objective-c类型。使用此

{{1}}

或{{1}},具体取决于您的需求。