似乎應該很容易將布爾值添加到NSMutableArray。嘗試插入nil
假設toDoArray被初始化爲一個NSMutableArray。以下內容:
BOOL checkBoxState = NO;
[toDoArray addObject:checkBoxState];
生成錯誤「嘗試插入nil」。
將負布爾值添加到可變數組的正確方法是什麼?
似乎應該很容易將布爾值添加到NSMutableArray。嘗試插入nil
假設toDoArray被初始化爲一個NSMutableArray。以下內容:
BOOL checkBoxState = NO;
[toDoArray addObject:checkBoxState];
生成錯誤「嘗試插入nil」。
將負布爾值添加到可變數組的正確方法是什麼?
NSMutable陣列需要的ID,目標C的怪異的一部分的ID是任何對象的,但不是原始(例如,int
s爲原語,而NSArray
s爲對象,並且在延伸部,id
多個)。
This question可能會有所幫助。
正如其他人所說,NSMutableArray
只能包含Objective-C對象。它們不必是NSObject
的子類,但這是最典型的。
然而,長你看到的attempt to insert nil.
運行時錯誤之前,你應該已經看到了編譯器警告:
warning: passing argument 1 of 'addObject:' makes pointer from integer without a cast
這是[用含糊不清,迂迴的方式]告訴你到底是什麼問題;你正試圖將某些東西插入一個不是[指向對象]的指針的數組中。
注意警告並修復它們。大多數情況下,警告的存在會指示運行時錯誤或崩潰。
在將其放入集合對象(NSArray,NSDictionary等)之前,需要使用NSNumber來包裝任何基本類型(BOOL,int,NSInterger等)。
添加BOOL數組:從陣列
BOOL checkBoxState = NO;
NSNumber* n = [NSNumber numberWithBool:checkBoxState];
[toDoArray addObject:n];
獲取BOOL:
NSNumber* n = [toDoArray objectAtIndex:0];
BOOL checkBoxState = [n boolValue];
沒有什麼奇怪的有關'id'。 Objective-C沒有固定的根類,因此「id」作爲對任何類的實例的引用而存在。 – bbum 2009-12-05 19:36:31
我想這只是我發現它很奇怪。 – 2009-12-05 20:53:47