13

I need to remove Null object added by

 [mutArrSkills addObject:[NSNull null]];

Do I need to iterate? Is there any function to remove all null values from NSMutableArray?

If need to Iterate, how will I do that?

Heena
  • 2,348
  • 3
  • 32
  • 58

5 Answers5

31

You can use NSMutableArray's removeObjectIdenticalTo: method, as follows

[mutArrSkills removeObjectIdenticalTo:[NSNull null]];

to remove the null values. No need to iterate.

Ilanchezhian
  • 17,426
  • 1
  • 53
  • 55
  • Aure you sure? I'm not because `Objects are considered identical if their object addresses are the same.`. AS you should know, `[NSNull null] != [NSNull null]`... – Nekto Feb 08 '12 at 11:28
  • Yes, as far as concerned in this case, the elements that are added by ` [mutArrSkills addObject:[NSNull null]];` are removed with that call. – Ilanchezhian Feb 08 '12 at 11:30
  • 5
    AS you should know, [NSNull null] is indeed equal to [NSNull null]. There is only one instance ever of class NSNull. All objects of that class are the same pointer. – gnasher729 Oct 16 '14 at 13:58
1

removeObjectIdenticalTo:

Removes all occurrences of a given object in the array.

Discussion This method uses the indexOfObjectIdenticalTo: method to locate matches and then removes them by using removeObjectAtIndex:. Thus, matches are determined using object addresses. If the array does not contain anObject, the method has no effect (although it does incur the overhead of searching the contents).

Community
  • 1
  • 1
Matthias Bauch
  • 89,811
  • 20
  • 225
  • 247
1

You can try doing this,

NSNull *nullValue = [NSNull null]; 

[mutArrSkills removeObjectIdenticalTo:nullValue];

I hope this helps.

nithinbhaktha
  • 723
  • 5
  • 8
0

In Swift you first have to cast your Swift Array to NSArray, make and make it mutable so you can remove the Objective-C leftover elements, then cast it back to 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]
Laszlo
  • 2,803
  • 2
  • 28
  • 33
-1

You may iterate like this.

for(int i=0,i<[mutArrSkills count]; i++)
{
  if([[mutArrSkills objectAtIndex:i] isKindOfClass:[NSNull Class]])
    {
    [mutArrSkills removeObjectAtIndex:i];  
   }
}
Nikhil Aneja
  • 1,259
  • 8
  • 13