Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSDictionary-避免零_Iphone_Objective C_Ios_Cocoa Touch_Nsdictionary - Fatal编程技术网

Iphone NSDictionary-避免零

Iphone NSDictionary-避免零,iphone,objective-c,ios,cocoa-touch,nsdictionary,Iphone,Objective C,Ios,Cocoa Touch,Nsdictionary,我在视图控制器中有很多文本字段(大约20个)。在用户填写文本字段(有些可能是空的)之后,我创建了一个NSAB字典并将其发送到我的数据中心类。我正在创建的NSDictionary如下所示: textfield1 -> textfield1_value textfield2 -> textfield2_value textfield3 -> textfield3_value textfield4 -> textfield4_value 问题是,只要用户将字段留空,就会在值中

我在视图控制器中有很多文本字段(大约20个)。在用户填写文本字段(有些可能是空的)之后,我创建了一个NSAB字典并将其发送到我的数据中心类。我正在创建的NSDictionary如下所示:

textfield1 -> textfield1_value
textfield2 -> textfield2_value
textfield3 -> textfield3_value
textfield4 -> textfield4_value
问题是,只要用户将字段留空,就会在值中输入nill。这会导致NSDictionary突然/过早初始化(如果是正确的单词)。检查每个和每20个文本字段是否为零是我唯一的选择吗?我觉得一定有更好的办法。谢谢

很抱歉造成混乱。我正在初始化NSDictionary,如下所示:

[NSDictionary dictionaryWithObjectAndKeys: obj1, key1, obj2, key2, ..., nil];

为了在
NSMutableDictionary
中存储
nil
,您应该用
[NSNull null]
将其包装,因为不能将
nil
放入


检查文本字段是否为空的方式实际上取决于您的代码,但如果您计划在中存储此类值,则必须检查
nil

为了在
NSMutableDictionary
中存储
nil
,您应该用
[NSNull]
将其包装起来,因为不能将
nil
放入


检查文本字段是否为空的方式实际上取决于您的代码,但如果您计划在中存储此类值,则必须检查
nil

如果使用setObject:forKey:方法,则应小心不要将nil作为值传递,这将引发NSInvalidArgumentException


如果使用setValue:forKey:方法,将nil设置为值实际上会从字典中删除键,从而节省内存。在您根本不需要密钥的情况下,此方法将非常有助于从字典(实际上是内存)中删除密钥。如果使用此方法,则不必在文本字段中检查nil,这也为您节省了一些时间。

如果使用setObject:forKey:方法,则应小心不要将nil作为值传递,这将引发NSInvalidArgumentException


如果使用setValue:forKey:方法,将nil设置为值实际上会从字典中删除键,从而节省内存。在您根本不需要密钥的情况下,此方法将非常有助于从字典(实际上是内存)中删除密钥。如果使用此方法,则不必在文本字段中检查nil,这也为您节省了一些时间。

您所说的“这会导致NSDictionary突然/过早地初始化”是什么意思?我假设他使用initWithObjects:然后将所有textfield_值作为参数给出:任何为nil的值都将“过早地”初始化结束参数列表。你说“这会导致NSDictionary突然/过早地初始化”是什么意思?我假设他使用initWithObjects:然后将所有textfield_值作为参数给出:任何为零的值都将“过早地”结束参数列表。我不知道NSNull。谢谢我不知道NSNull。谢谢