gpt4 book ai didi

ios - 将 Null 值和一个变量传递给 NSMutableArray/NSArray。为什么输出会有差异?

转载 作者:行者123 更新时间:2023-11-28 21:31:41 25 4
gpt4 key购买 nike

我的问题是如何将 Null 值传递给 NSMutableArray/NSArray。

但是通过搜索谷歌和浏览不同的网站,我认为我已经达到了我的目的。但是,在尝试的过程中,我产生了新的疑问。

请看下面的代码来理解我的问题

我正在声明一个可变数组并最初用一些对象对其进行初始化,而且我在声明本身时将一个空值传递给它。

现在当我在下面运行这段代码时

NSMutableArray * mar = [[NSMutableArray alloc]initWithObjects:@"first",@"last", nil];

[ar addObject:[NSNull null]];

NSLog(@"%@",mar);

O/P 是:

(
first,
last,
"<null>"
)

但我真正的疑问是当我如下初始化 NSMutableArray 时

NSString *str;

NSMutableArray * mar = [[NSMutableArray alloc]initWithObjects:@"first",str,@"last", nil];

[ar addObject:[NSNull null]];

NSLog(@"%@",mar);

O/P 是:

(
first,
"<null>"
)

数组中的第二个元素是“null”,我知道因为我已经传递了一个变量而没有为其分配任何值。它正在打印空值。但是为什么没有打印剩余的元素。

据我所知,数组在初始化时只要克服 nil 就会停止添加元素。但是在这里,在这种情况下。 o/p 显示第二个元素也为 null。(但不是 nil。)

那为什么不打印剩下的元素。

更新问题

NSString* str;
NSLog(@"%@",str);
NSMutableArray * mar = [[NSMutableArray alloc]initWithObjects:@"first",str,@"last", nil];

NSLog(@"%@",mar);

上面代码的o/p是

(null) // for str an uninitialised NSString variable.


(
first // first element in the array
)

如果 str 中存在的值是 (null),为什么数组遇到 nil 并停止向数组添加元素并打印它们。

现在,有人回答这个问题吗?

最佳答案

initWithObjects 使用 nil 作为最后一项的标记。如果您将 nil(单元化的 str 变量)作为 4 项中的第 2 项传递给它,实际上只会添加第一个。

[[NSMutableArray alloc]initWithObjects:@"first",str ?: [NSNull null],@"last", nil];

将通过将 nil 替换为 [NSNull null] 来解决您的问题。

另见 NSArray creation with variable argument lists

关于ios - 将 Null 值和一个变量传递给 NSMutableArray/NSArray。为什么输出会有差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com