使用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;
。
你能帮忙解决这个问题吗?
答案 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}},具体取决于您的需求。