从NSArray中的NSNumber获取Integer值

Phi*_*ord 6 iterator objective-c nsnumber nsarray ios

我有一个NSArray与NSNumber对象具有int值:

arrayOfValues = [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt:1], [NSNumber numberWithInt:3], [NSNumber numberWithInt:5], [NSNumber numberWithInt:6], [NSNumber numberWithInt:7], nil] autorelease];
[arrayOfValues retain];
Run Code Online (Sandbox Code Playgroud)

我试图像这样迭代数组:

int currentValue;
for (int i = 0; i < [arrayOfValues count]; i++)
{
    currentValue = [(NSNumber *)[arrayOfValues objectAtIndex:i] intValue];
    NSLog(@"currentValue: %@", currentValue); // EXE_BAD_ACCESS
}
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

sos*_*orn 18

您使用了错误的格式说明符.%@用于对象,但int不是对象.所以,你应该这样做:

int currentValue;
for (int i = 0; i < [arrayOfValues count]; i++)
{
    currentValue = [(NSNumber *)[arrayOfValues objectAtIndex:i] intValue];
    NSLog(@"currentValue: %d", currentValue); // EXE_BAD_ACCESS
}
Run Code Online (Sandbox Code Playgroud)

更多信息在文档中.

  • 你可以传递任何对象,但就像我说的那样,int不是一个对象. (4认同)