iOS :如何替换 NSArray 中出现的 <null>
iOS : how to replace occurrences of <null> in NSArray
我有一个 NSArray
,其中包含 string
个值,但有时它也可能包含 null
个值。我得到这样的 array
,
(
"<null>",
"<null>",
"<null>",
"<null>",
"<null>"
)
我想将上面的内容替换为,
(
" ",
" ",
" ",
" ",
" "
)
这意味着我想用空 string
替换 <null>
。如何做到这一点?我知道一些 string
方法,但无法在 array
.
上实施
您将不得不使用 here 的答案并遍历数组中的每个字符串并将 "<null>"
替换为 " "
编辑:我想我误解了你的问题,如果数组包含 NSNull 对象,那么你仍然需要遍历数组并像
这样检查
for(int i = 0; i < array.count; i++){
if([array[i] isKindOfClass:[NSNull class]]){
array[i] = @" ";
}
}
免责声明:还没有测试代码,只是在我的脑海中完成
如果您正在使用 swift,这是一种方式。
var stringArray = [String?]()
// Fill array with you stuff
// ...
// Check null (nil)
for string in stringArray
{
if string == nil
{
string = " "
}
}
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);
首先我们需要了解,它是空字符串还是从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 是不可变的,你不能改变它的内容
- 在迭代期间不要 remove/add 对象来自您用于迭代的同一数组,否则会引发异常
- 大多数时候是对NSNull对象的描述。 NSNull 是偷偷摸摸的,因为它只能处理很少的方法,而且由于
recognizeSelector
它总是导致崩溃的根源
- 快速枚举比普通 C for 循环更快
- 交换和替换数组中的对象需要时间
你可以试试这个。
for (NSInteger i = 0; i < array.count; i++) {
if ([array[i] isEqual:[NSNull null]] || [array[i] isEqual:@"<null>"]) {
[array replaceObjectAtIndex:i withObject:@" "];
}
}
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;
我有一个 NSArray
,其中包含 string
个值,但有时它也可能包含 null
个值。我得到这样的 array
,
(
"<null>",
"<null>",
"<null>",
"<null>",
"<null>"
)
我想将上面的内容替换为,
(
" ",
" ",
" ",
" ",
" "
)
这意味着我想用空 string
替换 <null>
。如何做到这一点?我知道一些 string
方法,但无法在 array
.
您将不得不使用 here 的答案并遍历数组中的每个字符串并将 "<null>"
替换为 " "
编辑:我想我误解了你的问题,如果数组包含 NSNull 对象,那么你仍然需要遍历数组并像
这样检查for(int i = 0; i < array.count; i++){
if([array[i] isKindOfClass:[NSNull class]]){
array[i] = @" ";
}
}
免责声明:还没有测试代码,只是在我的脑海中完成
如果您正在使用 swift,这是一种方式。
var stringArray = [String?]()
// Fill array with you stuff
// ...
// Check null (nil)
for string in stringArray
{
if string == nil
{
string = " "
}
}
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);
首先我们需要了解,它是空字符串还是从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 是不可变的,你不能改变它的内容
- 在迭代期间不要 remove/add 对象来自您用于迭代的同一数组,否则会引发异常
- 大多数时候是对NSNull对象的描述。 NSNull 是偷偷摸摸的,因为它只能处理很少的方法,而且由于
recognizeSelector
它总是导致崩溃的根源
- 快速枚举比普通 C for 循环更快
- 交换和替换数组中的对象需要时间
你可以试试这个。
for (NSInteger i = 0; i < array.count; i++) {
if ([array[i] isEqual:[NSNull null]] || [array[i] isEqual:@"<null>"]) {
[array replaceObjectAtIndex:i withObject:@" "];
}
}
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;