6

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;

提起された問題について助けていただけますか?

4

2 に答える 2

16

を に割り当てていNSNumber *ますNSInteger

s はオブジェクトをNSArray格納するものであり、これ@1.25[NSNumber numberWithFloat:1.25]

に変更します

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

またはより良い構文で

speed = speeds[sender.selectedSegmentIndex].integerValue;

また、あなたが望むのは、ではなく、にspeedなることだと思います。たとえば、1.25 を に割り当てることはできません。floatNSIntegerNSInteger

于 2013-06-22T15:12:07.460 に答える
3

ここでの問題は、目的の c 型であるを返すobjectAtIndex:ため、idに割り当てることができない を返すことです。これを使ってint@32NSNumber

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

またはfloatValue、必要なものに応じて。

于 2013-06-22T15:13:36.117 に答える