NSDictionary - 避免nils

时间:2011-07-16 10:35:00

标签: iphone objective-c ios cocoa-touch nsdictionary

我在视图控制器中有很多文本字段(大约20个)。在用户填写文本字段(有些可能为空)之后,我创建了ab NSDictionary并将其发送到我的数据中心类。我创建的NSDictionary看起来像这样:

textfield1 -> textfield1_value
textfield2 -> textfield2_value
textfield3 -> textfield3_value
textfield4 -> textfield4_value

问题是,只要用户将字段留空,就会将nill置于值中。这会导致NSDictionary突然/过早地初始化(如果那是正确的词)。我在这里唯一的选择是检查每个20个文本字段是否为零?我觉得必须有更好的方法。感谢。

对此感到抱歉。我正在初始化NSDictionary:

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

为了将nil存储在NSMutableDictionary中,您应该使用[NSNull null]进行换行,因为无法将nil置于其中。

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