NSArray和bool值

nod*_*nja 13 arrays cocoa-touch boolean objective-c nsarray

NSArray可以保留一系列bool值吗?

以下代码运行

BOOL b = NO;
NSMutableArray *array = [[NSMutableArray alloc] init];

[array addObject:[NSNumber numberWithBool:b]];

NSLog(@"value is %d", [array objectAtIndex:0] );
Run Code Online (Sandbox Code Playgroud)

但是,我没有像预期的那样得到0的值.相反,这就是我得到的

值是37736096

Phi*_*ert 39

是的,只需将布尔值包装在NSNumber中:

BOOL b = YES;

[array addObject:[NSNumber numberWithBool:b]];
Run Code Online (Sandbox Code Playgroud)

如果要检索布尔值,请使用:

BOOL b = [[array objectAtIndex:i] boolValue]; 
// only if you know for sure it contains a boolean
Run Code Online (Sandbox Code Playgroud)

  • 这是NSNumber对象的地址,而不是其内容.这是因为你忘了打电话给-boolValue (2认同)