【发布时间】:2016-03-03 10:08:15
【问题描述】:
我的问题是如何将 Null 值传递给 NSMutableArray/NSArray。
但是通过搜索谷歌和浏览不同的网站,我认为我已经达到了我的目的。但是,在尝试的过程中,我有了一个新的疑问。
查看下面的代码来理解我的问题
我正在声明一个可变数组并最初使用一些对象对其进行初始化,并且我在声明本身时将 null 传递给它。
现在当我在下面运行这段代码时
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并停止向数组添加元素并打印它们。
现在,有人回答这个问题吗?
【问题讨论】:
-
你为什么不直接使用
"",一个空字符串。您可以在需要时为其赋值,如果要进行比较,可以使用if ans == "" -
@Lee 是的,当然。我可以像你说的那样使用它来使程序正常工作。但我的问题不同。我的问题是,为什么当我传递一个变量而不分配任何值时它不能正常工作。
-
@Mahesh 第二个元素为空,因为您在记录之前将 [NSNull null] 添加到该行中
-
在第二个示例中,
str在分配数组时为nil,因此它标志着初始对象列表的终止。实际上,您在初始化时只添加了一个元素。 -
@Avi 是的,你是对的。它解释了一切。但你应该已经回答了。而不是评论。
标签: ios objective-c arrays nsarray