i have array of birthdates as array is getting filled from facebook so there are some friends whos birthdates are private so it contain NULL how to convert that array like empty string wherever there is null value the array is like below
"<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",
The null
values appear to be string literals @"<null>"
rather than the NSNull
objects typically used to represent nil
s 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];
}
}
}
来源:https://stackoverflow.com/questions/15292037/how-to-remove-null-values-from-nsmutablearray-ios