how to remove NULL values from NSMutableArray? ios

风流意气都作罢 提交于 2019-12-04 06:42:24

The null values appear to be string literals @"<null>" rather than the NSNull objects typically used to represent nils in Cocoa collections. You can filter them out by using NSArray's filteredArrayUsingPredicate method:

NSArray *filtered = [original filteredArrayUsingPredicate:pred];

There are several ways of making the pred, one of them is

NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(id str, NSDictionary *unused) {
    return ![str isEqualToString:@"<null>"];
}];

You have to use this to remove the actual [NSNull null] value.

 [array removeObjectIdenticalTo:[NSNull null]];

This works for me:

NSMutableArray *array = [NSMutableArray arrayWithObjects:
                         @"<null>",
                         @"10/29/1988",
                         @"11/13",
                         @"03/24/1987",
                         @"04/25/1990",
                         @"03/13",
                         @"01/01",
                         @"<null>",
                         @"12/15/1905",
                         @"07/10",
                         @"11/02/1990",
                         @"12/30/1990",
                         @"<null>",
                         @"07/22/1990",
                         @"01/01",
                         @"07/17/1989",
                         @"08/28/1990",
                         @"01/10/1990",
                         @"06/12/1990", nil];
NSLog(@"%d", [array count]);
NSString *nullStr = @"<null>";
[array removeObject:nullStr];
NSLog(@"%d", [array count]);

In order to remove null values use :

[yourMutableArray removeObjectIdenticalTo:[NSNull null]];

You don't need iterate over.

    for(int i = 0;[yourMutableArray count] > 0;i++){
            if([yourMutableArray isKindOfClass:[NSNull class]]){ // indentifies and removes null values from mutable array

            [yourMutableArray removeObjectAtIndex:i];
                            // or 
            [yourMutableArray replaceObjectAtIndex:i withObject:@"No date available"];

            NSLog(@"*** %@",yourMutableArray);
            }
       }

For json response I removed null values like this

NSArray *arr = [NSArray arrayWithObjects:_IDArray, _TypeArray, _NameArray, _FlagArray, nil];
for (int i=0; i<_integer; i++) {
// My json response assigned to above 4 arrayes

    //Now remove null values 
    //Remove null values
    for (int j=0; j<arr.count; j++) {
         for (NSMutableArray *ar in arr) {
              if ([[ar objectAtIndex:i] isKindOfClass:[NSNull class]] || [[ar objectAtIndex:i] isEqualToString:@"null"]) {
                  [ar addObject:@""];//Add empty value before remove null value
                  [ar removeObjectAtIndex:i];
              }
         }
    }

}

Now remove empty values

//Add arrays to mutable array to remove empty objects

NSArray *marr = [NSArray arrayWithObjects:_IDArray, _TypeArray, _NameArray, _FlagArray, nil];
//Remove empty objects from all arrays
for (int j=0; j<marr.count; j++) {
     for (int i=0; i<[[marr objectAtIndex:j] count]; i++) {
          if ([[[marr objectAtIndex:j] objectAtIndex:i] isEqualToString:@""]) {
              [[marr objectAtIndex:j] removeObjectAtIndex:i];
          }
      }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!