2010-09-22 55 views
12

NSArray是否可以包含一個布爾值數組?NSArray和布爾值

下面的代碼運行

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

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

NSLog(@"value is %d", [array objectAtIndex:0]); 

然而,正如預期的,我不爲NO得到的值0。相反,這是我得到

值是37736096

回答

39

是的,只是包裝中的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 
+0

你能解釋爲什麼布爾NO變成一個大數目?這是一個隨機值嗎?謝謝。 – chenyi1976 2014-02-25 06:08:33

+2

這是NSNumber對象的地址,而不是它的內容。這是因爲你忘記了調用-boolValue – 2014-03-02 22:42:56

4

要完成Philippe答案,您應該使用litteral字符串int導致在XCode 4.4發佈蘋果LLVM編譯器版本4.0

您的代碼將是這樣的:

NSMutableArray *array = [[NSMutableArray alloc] init]; 

array[0] = @YES; 

//Value is 1 
NSLog(@"Value is %d:", [array[0] boolValue]); 
+0

...以及輸出應該是什麼? – 2016-02-07 11:36:54

+0

%d將格式化輸出到一個數字,所以你會看到「數值是1」 – tiguero 2016-02-08 15:17:29