![](/img/trans.png)
[英]Incompatible Integer to pointer conversion sending 'NSInteger' (aka 'int') to parameter of type 'NSInteger *' (aka '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.