2013-02-23 2 views
1

У меня проблема абсурдная.Значение из NSDictionary действительно, внутри есть нуль

У меня есть значения различного типа, которые вставляются в словарь. Проблема в том, что значение из словаря является допустимым, внутри - null.

NSString *name = [NSString stringWithFormat:@"%@",_nameTextField.text]; 
NSString *icon = [NSString stringWithFormat:@"%i",itemIcon]; 

NSDictionary *dictionary = [[NSDictionary alloc]initWithObjectsAndKeys:name,@"name", 
icon,@"icon", nil]; 

NSLog(@"string %@ dictionary %@",icon,[dictionary objectForKey:@"icon"]); 

LOG

string 18 dictionary (null) 

Эта проблема возникает только на второе значение, то первое "имя" не делает. Но процесс тот же.

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

Теперь я задаюсь вопросом. Может быть проблемой в Xcode?

Большое спасибо

+4

Что такое 'itemIcon'? И можете ли вы попытаться распечатать словарь в NSLog и опубликовать его. – iDev

+2

Просьба привести полный пример. Лучше предположить, что словарь не создается, потому что имя (или, возможно, элемент) плохое. – zaph

+2

Пожалуйста, не злоупотребляйте 'stringWithFormat:'. Первая строка должна быть: 'NSString * name = _nameTextField.text;'. – rmaddy

ответ

7

При создании словаря с помощью initWithObjectsAndKeys (или dictionaryWithObjectsAndKeys:), значение nil указывает на конец аргументов.

Это верно, если вы введете явный nil в список аргументов (как и все в конце), или если используется переменная с значением nil.

NSSString *name = nil; 
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:name, @"name", nil]; 

Это дает вам пустой словарь, потому что первым аргументом является nil. Ни один из других аргументов даже не рассматривается.

Смежные вопросы