2012-02-08 62 views
13

我需要刪除的我將如何能夠從NSMutableArray中刪除[NSNull Null]對象?

[mutArrSkills addObject:[NSNull null]]; 

加入空對象是否需要重複?有沒有任何函數從NSMutableArray中刪除所有空值?

如果需要迭代,我該怎麼做?

+1

removeObjectIdenticalTo也會讓它陣列,所以你爲什麼不饒你的自我。 – 2012-02-08 11:45:01

回答

30

您可以使用NSMutableArrayremoveObjectIdenticalTo:方法,如下

[mutArrSkills removeObjectIdenticalTo:[NSNull null]]; 

刪除空值。無需迭代。

+0

Aure你確定嗎?我不是因爲'如果對象地址相同,則對象被認爲是相同的。你應該知道,'[NSNull null]!= [NSNull null]'... – Nekto 2012-02-08 11:28:18

+0

是的,就本例而言,通過'[mutArrSkills addObject:[NSNull null]];'添加的元素是通過該呼叫移除。 – Ilanchezhian 2012-02-08 11:30:48

+0

Yes.it工作正常 – Heena 2012-02-08 12:11:29

1

removeObjectIdenticalTo:

移除陣列中的給定對象的所有出現。

討論 此方法使用indexOfObjectIdenticalTo:方法來定位的匹配,然後通過使用removeObjectAtIndex刪除它們:.因此,使用對象地址來確定匹配。如果數組不包含anObject,則該方法不起作用(儘管它會導致搜索內容的開銷)。

+0

你確定嗎?我不是因爲'如果對象地址相同,則對象被認爲是相同的。正如你應該知道的那樣,'[NSNull null]!= [NSNull null]'... – Nekto 2012-02-08 11:28:11

+0

@Nekto請將我的答案提交下來。 – sElanthiraiyan 2012-02-08 11:41:47

-1

您可以像這樣迭代。

for(int i=0,i<[mutArrSkills count]; i++) 
{ 
    if([[mutArrSkills objectAtIndex:i] isKindOfClass:[NSNull Class]]) 
    { 
    [mutArrSkills removeObjectAtIndex:i]; 
    } 
} 
+2

如果數組中有兩個連續的NSNull對象,那完全不起作用。 – gnasher729 2014-10-16 13:59:49

1

你可以嘗試這樣做,

NSNull *nullValue = [NSNull null]; 

[mutArrSkills removeObjectIdenticalTo:nullValue]; 

我希望這有助於。