NSArray 和布尔值
Posted
技术标签:
【中文标题】NSArray 和布尔值【英文标题】:NSArray and bool values 【发布时间】:2011-04-15 17:38:23 【问题描述】:NSArray 可以保存一个布尔值数组吗?
以下代码运行
BOOL b = NO;
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[NSNumber numberWithBool:b]];
NSLog(@"value is %d", [array objectAtIndex:0] );
但是,我没有得到预期的 NO 值 0。相反,这就是我得到的
值为 37736096
【问题讨论】:
【参考方案1】:是的,只需将布尔值包装在 NSNumber 中:
BOOL b = YES;
[array addObject:[NSNumber numberWithBool:b]];
如果要检索布尔值,请使用:
BOOL b = [[array objectAtIndex:i] boolValue];
// only if you know for sure it contains a boolean
【讨论】:
你能解释一下为什么 bool NO 会变成一个大数字吗?那是随机值吗?谢谢。 那是 NSNumber 对象的地址,而不是它的内容。这是因为你忘记调用 -boolValue【参考方案2】:要完成 Philippe 的回答,您应该使用 XCode 4.4 中引入的随 Apple LLVM 编译器版本 4.0 发布的文字字符串。
您的代码将如下所示:
NSMutableArray *array = [[NSMutableArray alloc] init];
array[0] = @YES;
//Value is 1
NSLog(@"Value is %d:", [array[0] boolValue]);
【讨论】:
...输出应该是什么? %d 会将输出格式化为数字,因此您将看到“值为 1”以上是关于NSArray 和布尔值的主要内容,如果未能解决你的问题,请参考以下文章