Iphone NSDictionary-避免零
我在视图控制器中有很多文本字段(大约20个)。在用户填写文本字段(有些可能是空的)之后,我创建了一个NSAB字典并将其发送到我的数据中心类。我正在创建的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 问题是,只要用户将字段留空,就会在值中
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。谢谢