我有一个包含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;