7

我有一个生日数组,因为数组是从 Facebook 填充的,所以有些朋友的生日是私有的,所以它包含 NULL 如何像空字符串一样转换该数组,只要有空值,数组如下所示

"<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",
4

6 回答 6

14

这些null值似乎是字符串文字@"<null>",而不是NSNull通常用于nil在 Cocoa 集合中表示 s 的对象。您可以使用NSArray'sfilteredArrayUsingPredicate方法将它们过滤掉:

NSArray *filtered = [original filteredArrayUsingPredicate:pred];

有几种制作方法pred,其中一种是

NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(id str, NSDictionary *unused) {
    return ![str isEqualToString:@"<null>"];
}];
于 2013-03-08T10:42:55.597 回答
12

您必须使用它来删除实际的 [NSNull null] 值。

 [array removeObjectIdenticalTo:[NSNull null]];
于 2013-06-24T18:49:44.630 回答
3

这对我有用:

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]);
于 2013-03-08T10:42:09.547 回答
1

为了删除空值使用:

[yourMutableArray removeObjectIdenticalTo:[NSNull null]];

你不需要迭代。

于 2016-06-01T17:19:54.243 回答
1
    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);
            }
       }
于 2017-08-06T23:36:36.707 回答
0

对于json响应,我删除了这样的空值

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];
              }
         }
    }

}

现在删除空值

//将数组添加到可变数组以删除空对象

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];
          }
      }
}
于 2018-03-08T07:10:11.293 回答