2012-02-08 61 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]; 

我希望这有助于。