Reputation: 168
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",
Upvotes: 7
Views: 7591
Reputation: 17902
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];
}
}
}
Upvotes: 0
Reputation: 103
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);
}
}
Upvotes: 1
Reputation: 5712
In order to remove null values use :
[yourMutableArray removeObjectIdenticalTo:[NSNull null]];
You don't need iterate over.
Upvotes: 1
Reputation: 1951
You have to use this to remove the actual [NSNull null] value.
[array removeObjectIdenticalTo:[NSNull null]];
Upvotes: 12
Reputation: 726499
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>"];
}];
Upvotes: 14
Reputation: 5499
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]);
Upvotes: 3