gpt4 book ai didi

ios - 特定对象后的 NSDictionary 为空?

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

我做了一个 NSDictionary,比如

 NSDictionary *question = [NSDictionary dictionaryWithObjectsAndKeys:
variable_first,@"first",
variable_second,@"second",
variable_third,@"third",
variable_fourth,@"fourth",
variable_fifth,@"fifth",
nil];

在这里,如果任何一个

变量优先变量_秒变量_第三变量_第四可变_第五

然后,Dictionary 将不再保存任何键。

比方说,如果来自服务器的 variable_third 为 null,则不会添加 variable_fourth 和 variable_fifth,无论它们是否有值。

我能看到 apple 写的任何地方吗,或者知道为什么 Objective-C 会显示这种行为?

谢谢。

最佳答案

这就是 NSDictionary 的工作原理,请阅读文档。它在第一个 nil 对象处停止。第一个 nil 值通常应该是您在末尾添加的 nil,但如果任何其他值是 nil,dictionaryWithObjectsAndKeys 就到此为止。

您可以使用现代语法 @{ key: value, key: value, ... }

在这种情况下,如果任何值为 nil,您的应用就会崩溃。这比默默地犯错要好 100 倍,因为应用程序崩溃了,你找到原因,然后修复它。

解决方法:您不能尝试将 nil 对象添加到字典中。有两种方法,你需要决定你想要哪一种:要么从一个可变字典开始,然后只添加那些值不为 nil 的键/值对。或者你在字典中添加一个值 [NSNull null] 而不是 nil 。显然,当您访问字典时,在一种情况下这些值将返回 nil,在另一种情况下它们将返回 [NSNull null]。无论你喜欢什么。

关于ios - 特定对象后的 NSDictionary 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34390777/

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