2010-10-08 61 views
5

我想創建一個布爾值的NSArray。請問我有多少人?NSArray充滿布爾

NSArray *array = [[NSArray alloc] init]; 
array[0] = YES; 

這對我不起作用。

感謝

回答

13

NSArrays不是c數組。你不能訪問一個NSArray的值與array[foo];
但你可以在Objective-C中使用c類型數組沒有問題。

Objective-C的方法是:

NSMutableArray *array = [[NSMutableArray alloc] init]; 
[array addObject:[NSNumber numberWithBool:YES]]; 
//or 
[array addObject:@(NO)]; 
... 
BOOL b = [[array objectAtIndex:0] boolValue]; 
.... 
[array release]; 

編輯:鏗鏘的新版本,現在的標準編譯器的Objective-C,瞭解Object subscripting。當你使用叮噹的新版本,你將能夠使用array[0] = @YES

+0

我試圖,它給我***由於未捕獲的異常'NSInvalidArgumentException'終止應用程序,原因:'+ [ NSNumber numberWithBOOL:]:發送到類 – Lilz 2010-10-08 09:37:01

+0

的無法識別的選擇器應該是[NSNumber numberWithBool:YES]。對不起,我的錯誤 – 2010-10-08 09:38:40

+0

哦,非常感謝! – Lilz 2010-10-08 09:43:54

2

使用[NSNumber numberWithBool: YES]得到一個對象,你可以把收藏。

+0

陣列[0] = [NSNumber的numberWithBool:YES];給我一個'不兼容的類型賦值'錯誤 – Lilz 2010-10-08 09:19:55

+0

[數組addObject:[NSNumber numberWithBool:YES]] – 2010-10-08 09:22:33

3

好像你已經混淆了c數組與objc NSArray。 NSArray在Java中更像是一個list,你可以在其中添加對象,但不能像NSInteger,BOOL,double等值。如果你希望將這些值存儲在NSArray中,你首先需要創建一個可變數組:

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

,然後添加適當的對象給它(在這種情況下,我們將使用的NSNumber來存儲您的BOOL值):

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

而這幾乎是它!如果要訪問bool值,只需要調用:

BOOL yourBoolValue = [[array objectAtIndex:0] boolValue]; 

乾杯, 的Pawel