IOS: "попытка вставить нулевой объект из объектов [1]" при создании словаря

Я создаю собственный класс панели навигации и настраиваю его атрибуты заголовка, используя следующий код:

self.titleTextAttributes = @{ UITextAttributeFont: bariol,
                              UITextAttributeTextColor: [UIColor whiteColor]
                            };

Однако, когда я запускаю код, он возвращает следующее сообщение об ошибке:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[1]'

Я использую Xcode 4.6 и работаю на устройстве с помощью iOS 6.

Ответ 1

Параметры литералов (значения и ключи вашего словаря) не должны быть nil.

Если вы предпочитаете конструктор, который менее строг, вы можете вместо этого использовать +[NSDictionary dictionaryWithObjectsAndKeys:].

Ответ 2

Похоже, ваш bariol объект nil. Вы не можете хранить nil в словаре.

Edit:

Собственно, вы уверены, что правильная строка кода? Ваши ссылки на ошибки NSPlaceholderArray, что говорит о проблеме с литералом @[], а не @{}.

Ответ 3

Эта ошибка, кажется, где-то в другом месте. Это указывает на ошибку массива на объекте '1'. В вашем случае у вас есть словарь, а объект "1" - UITextAttributeTextColor: [UIColor whiteColor], который никогда не будет равен нулю.