Ответ Лорана правильный, вы назначаете неверный объект.
Лично я стараюсь сводить изменяемые объекты к минимуму при кодировании. Например, вы создаете адреса, которые являются непостоянными словарями, и сохраняете их в непостоянном массиве. Лично я бы использовал неизменный словарь для адресов. Потребовалось бы немного больше кода, чтобы заполнить каждый адрес, но вы могли бы изменить его на другой метод. Дело в том, что вместо изменения адреса. Как побочный эффект, компилятор поймал бы вашу опечатку, потому что вы пытались изменить неизменяемый объект.
На самом деле, возможно, было бы даже лучше создать класс адресов, чем просто заполнять NSDictionary.