Почему мой NSMutableDictionary становится нулевым в setObject? - PullRequest
0 голосов
/ 21 ноября 2011

Я пытаюсь этот код,

 NSString *titleOfPlace = [place objectForKey:@"name"];
 NSString *reference = [place objectForKey:@"reference"];
 [placesExtraInfo setObject:reference forKey:titleOfPlace];
 NSLog(@"%@", (NSString *)[placesExtraInfo objectForKey:titleOfPlace]);

Вывод,

2011-11-21 10:06:49.536 Tittle-Tattle[25545:1bb03] 0
2011-11-21 10:06:49.554 Tittle-Tattle[25545:1bb03] (null)
2011-11-21 10:06:49.555 Tittle-Tattle[25545:1bb03] (null)
2011-11-21 10:06:49.555 Tittle-Tattle[25545:1bb03] (null)
2011-11-21 10:06:49.555 Tittle-Tattle[25545:1bb03] (null)
.... about 20 of them as I had 20 objects to add...

Что я делаю не так?

PS КогдаЯ NSlog значение titleOfPlace и reference, чем он печатает идеально.Чем же он не сохраняется внутри NSMutableDictionary?

Спасибо за любой предоставленный ввод!

ОБНОВЛЕНИЕ

title John's Grill
reference CnRkAAAAmyHKGYtr9brX5uJEwlyK791oCWErzrY8hKjFX2eXBV5hrrbVjE_-CPvCfoxUpu4TiXswTXUtvP_UkYG2p4RG2a1oc_4HSxku1jIlVx0H4LZgo_SQbUMSrJ1xDvwxxWVsyWtEjxCIF6qma_slsFSLphIQmSnwBgYQATX46MXkuW0s5BoUGM0K_KRvH_gbc4k-TSsSpgnQyTk
please no null (null)
2011-11-21 10:19:40.339 Tittle-Tattle[30277:1bb03] title Fifth Floor
reference CnRiAAAAtzTFHqqcAMyYzuKSq7nwHdt9e-lnP1W4i6pyUGQiomT0SvqDm1RWxhH05fJpqMJ9RdU8QHO-g7-EXgVHQnoms_bip5gGXdE96SCN7HQW5-Y69K7144VvgnOATVVNZRWQgyNZ2NNYRSltVuL61UXg7BIQ8YinfdZ6Ahq2lU6XhNVQ7hoU2IwUAHKcGHELPeYgbshPmiS9nOA
please no null (null)
2011-11-21 10:19:40.339 Tittle-Tattle[30277:1bb03] title Ghirardelli Chocolate
reference CnRsAAAAkHnx_nYhhe4QnV2jQyWdU5Vb387rFdVlhPcsnp6ZUjEroEzRLCcYO687ybSlTqSMDP5BxJVeehgUt9kkL97l1puos89e2HT85t-H5VWl7G0qZ0M_IoL0Gp3VmKl07MQRFt0_zdXesSVjSzLFRpBDChIQwcpeapYjGYq8jSQTZUmoMxoUSS1M0rBvMkqKSRRGMpWlyWbHUJ0
please no null (null)

Ответы [ 3 ]

2 голосов
/ 21 ноября 2011

Альбертамг к чему-то относится.

Вы не можете установить нулевое значение и не можете установить ненулевое значение для нулевой клавиши

//given
NSMutableDictionary * dict = [[NSMutableDictionary alloc] init];
//will crash here
[dict setObject:nil forKey:@"key"];
//will crash here if the above line is commented out
[dict setObject:@"val" forKey:nil];

Тем не менее,

 NSLog(@"%@", [nil objectForKey:@"key"]);

выходы

2011-11-20 18:22:08.609 TestEnvironment[1221:207] (null)
2 голосов
/ 21 ноября 2011

Как я уже сказал в моем комментарии выше, убедитесь, что placesExtraInfo равно , а не nil (если вы отправите objectForKey: на nil, он вернет nil).

2 голосов
/ 21 ноября 2011

Я думаю, что Альбертамг прав - проверьте placesExtraInfo.Ваш вопрос говорит только о том, что вы проверили titleOfPlace и reference.Попытка сохранить объект nil в словаре вызвала бы исключение, но обмен сообщениями на nil приводит к nil.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...