NSDictionary - избегая нулей - PullRequest
1 голос
/ 16 июля 2011

У меня много текстовых полей (около 20) в контроллере вида. После того, как пользователь заполняет текстовые поля (некоторые могут быть пустыми), я создаю ab NSDictionary и отправляю его в мой класс центра обработки данных. NSDictionary, который я создаю, выглядит следующим образом:

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

Дело в том, что каждый раз, когда пользователь оставляет поле пустым, в значение добавляется ноль. Это приводит к тому, что NSDictionary инициализируется внезапно / преждевременно (если это правильное слово). Является ли проверка на ноль для каждого 20 текстового поля моей единственной возможностью здесь? Я чувствую, что должен быть лучший способ. Спасибо.

Извините за путаницу. Я инициализирую NSDictionary следующим образом:

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

Ответы [ 2 ]

5 голосов
/ 16 июля 2011

Если вы используете setObject: forKey: , вы должны быть осторожны, чтобы не передавать nil в качестве значения, которое вызовет NSInvalidArgumentException .

Если вы используете setValue: forKey: метод, установка nil в качестве значения фактически удаляет ключ из словаря, что экономит память.Этот метод будет действительно полезен для удаления ключа из словаря ( на самом деле память ) в ситуациях, когда вы вообще этого не хотите.Если вы используете этот метод, вам не нужно проверять nil в текстовых полях, что также экономит ваше время.

2 голосов
/ 16 июля 2011

Чтобы сохранить nil в NSMutableDictionary, вы должны обернуть его [NSNull null], потому что не можете вставить nil в.

То, как вы будете проверять, является ли текстовое поле пустым, на самом деле зависит от вашего кода, но проверка на nil является обязательной, если вы планируете хранить такое значение в.

...