iOS:如何替换<null>NSArray中的出现次数



我有一个包含string值的NSArray,但有时它也可能包含null值。我得到这样的array

(
    "<null>",
    "<null>",
    "<null>",
    "<null>",
    "<null>"
)

我想将上面的替换为,

(
    " ",
    " ",
    " ",
    " ",
    " "
)

这意味着我想用空string替换<null>。 如何实现?我知道一些string方法,但无法在array上实现。

NSMutableArray *arr = [myNullArray mutableCopy];
for (int i=0; i < [arr count]; i++)
{
  if ([[arr objectAtIndex:i] isKindOfClass:[NSNull Class]])
  {
     [arr inserObject:@" " atIndex:i];
  }
}
NSLog(arr);

您必须使用此处的答案并遍历数组中的每个字符串,并执行"<null>"替换为" "

编辑:我想我误解了你的问题,如果数组包含 NSNull 对象,那么你仍然需要遍历数组并像

for(int i = 0; i < array.count; i++){
 if([array[i] isKindOfClass:[NSNull class]]){
  array[i] = @" ";
 }
}

免责声明:没有测试过代码,只是在我的头顶上做

你可以尝试这样的事情。

for (NSInteger i = 0; i < array.count; i++) {
    if ([array[i] isEqual:[NSNull null]] || [array[i] isEqual:@"<null>"]) {
        [array replaceObjectAtIndex:i withObject:@" "];
    }
}

首先,我们需要了解它是一个空字符串还是从NSNull对象的日志中获取的描述。我想array是你的数组。在第一种情况下:

 NSMutableArray * mutArr = @[].mutableCopy;
    for (id obj in array) {
        if ([obj isKindOfClass:NSString.class]) {
            if ([obj isEqualToString:@"<null>"]) {
                [mutArr addObject:@""];
            }
            else {
                [mutArr addObject:obj];
            }
        else {
            [mutArr addObject:obj];
        }
    }
    array = mutArr.copy;

但我想是第二个:

NSMutableArray * mutArr = @[].mutableCopy;
    for (id obj in array) {
        if (obj == [NSNull null]) {
                [mutArr addObject:@""];
            }           
        else {
            [mutArr addObject:obj];
        }
    }
    array = mutArr.copy;

只是一些可能让您感兴趣的提示:

  • 如果原始阵列是 NSArray 是不可变的,并且您无法更改其内容
  • 在迭代期间,不要从用于迭代的同一数组中删除/添加对象,否则将引发异常
  • 时间的莫斯托是对NSNull对象的描述。NSNull是偷偷摸摸的,因为它只能处理很少的方法,并且由于不recognizeSelector,它总是崩溃的来源
  • 快速枚举比常见的 C for 循环更快
  • 交换和替换数组中的对象需要时间

如果你正在使用 swift,这将是一种方式。

var stringArray = [String?]()
// Fill array with you stuff
// ...
// Check null (nil)
for string in stringArray
{
    if string == nil
    {
        string = " "
    }
}
   NSMutableArray *anArray = [NSMutableArray arrayWithArray:yourArray];  
     for (id anObject in anArray) {
     if((anObject) && (anObject != nil) && !([anObject
     isKindOfClass:[NSNull class]]))   
     { 
          // if object is not nil  
     }
 else{
           anObject = @"";  
      } 
 }
    yourArray = (NSArray *)anArray;

最新更新