2012-12-12 123 views
1

在Objective-C中,我需要初始化一個null/nil數組(不確定使用哪一個)。初始化空數組

我有這樣的代碼:

NSMutableArray * ObjectIndex = [[NSMutableArray alloc] initWithCapacity:maxObjectId]; 

    for (int i = 0; i < maxObjectId; i++) 
    { 
     [ObjectIndex setObject:nil atIndexedSubscript:i]; 
    } 

我發現了一個錯誤,指出對象不能是零。

我打算使用這個數組存儲在某些索引對象中,留下其他零(零?)

在後面的代碼:

for (Object * obj in objs) 
{ 
    ObjectIndex[obj.ID] = obj; 
} 
+0

你試過[ObjectIndex setObject:@「」atIndexedSubscript:i]; ??? –

回答

3

這就是NSNull是。從文檔:

NSNull類定義了一個單獨的對象,用於表示集合對象中的空值 值(不允許爲零值)。

所以,你可以用[NSNull null]而不是nil填寫您的數組:

for (int i = 0; i < maxObjectId; i++) 
{ 
    ObjectIndex[i] = [NSNull null]; 
} 

因爲[NSNull null]是一個單獨的對象,你可以檢查與

if ([ObjectIndex[i] isEqual:[NSNull null]]) { 
    // "empty" 
} 

注數組條目: Objective-C實例變量的名稱通常以小寫字母開頭,因此objectIndex會更好 名稱。

1

與其使用稀疏數組,爲什麼不使用數字作爲關鍵字的NSMutableDictionary?這樣你就不用擔心預填充空值。

或者,如果你真的想用一個數組,我建議用兩種ADDOBJECT初始化:或insertObject:atIndex:

0

簡單!你可以這樣做

NSMutableArray * ObjectIndex = [[NSMutableArray alloc] initWithCapacity: maxObjectId]; 
for(int i=0 ; i< maxObjectId ; i++) { 
    [ObjectIndex addObject:[NSNull null]]; 
}