我怎样才能从NSMutableArray中删除[NSNull Null]对象?

时间:2012-02-08 11:19:38

标签: iphone objective-c ios4 nsmutablearray

我需要删除

添加的Null对象
 [mutArrSkills addObject:[NSNull null]];

我需要迭代吗?是否有任何函数可以从NSMutableArray中删除所有空值?

如果需要迭代,我该怎么做?

5 个答案:

答案 0 :(得分:31)

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

[mutArrSkills removeObjectIdenticalTo:[NSNull null]];

删除空值。无需迭代。

答案 1 :(得分:1)

removeObjectIdenticalTo:

  

删除数组中所有出现的给定对象。

     

<强>讨论   此方法使用indexOfObjectIdenticalTo:方法查找匹配项,然后使用removeObjectAtIndex:删除它们。因此,使用对象地址确定匹配。如果数组不包含anObject,则该方法无效(尽管它会产生搜索内容的开销)。

答案 2 :(得分:1)

您可以尝试这样做,

NSNull *nullValue = [NSNull null]; 

[mutArrSkills removeObjectIdenticalTo:nullValue];

我希望这会有所帮助。

答案 3 :(得分:0)

在Swift中,您首先必须将Swift Array强制转换为NSArray,使其可变,以便可以删除Objective-C剩余的元素,然后将其强制返回到Array

Fatal error: NSArray element failed to match the Swift Array Element type

// my crashing array, containing a not String element, like NSNull or anything else
let myUnsafeSwiftArray: [String]

// make it safely NSArray, then make it mutable
let mutableUnsafeArray = NSMutableArray(array: myUnsafeSwiftArray as NSArray)

// remove leftover class, like [NSNull null] aka NSNull.init()
unsafeTextures.removeObject(identicalTo: NSNull.init())

// Cast the safe array back to its supposed to by element type
let safeArray = unsafeTextures as? [String]

答案 4 :(得分:-1)

你可以像这样迭代。

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