JSONKit нераспознанный селектор при сериализации

Я пытаюсь использовать библиотеку JSONKit и включил исходные файлы в мой проект. Я включил заголовок JSONKit.h, чтобы включенная категория давала объектам NSDictionary селекторы JSONData и JSONString.

  NSMutableDictionary* root = [NSMutableDictionary dictionary];
  [root setValue:@"CONNECT" forKey:@"command"];
  NSData* data = [root JSONData];

Но во время выполнения я получаю следующую ошибку:

 -[__NSCFDictionary JSONString]: unrecognized selector sent to instance 0x784b870

Почему категория не добавляет соответствующие методы к объектам NSDictionary?

3 ответа

Решение

Я отвечаю на свой вопрос, потому что я только что понял.

Мой код является частью статической библиотеки, на которую ссылается другое приложение iOS. При включении статической библиотеки, которая экспортирует категории, приложение, использующее категорию, должно быть связано с флагом компоновщика "-ObjC".

Хотя принятый ответ решил проблему для меня, понимание того, почему это произошло (а почему нет), безусловно, полезно. Для более подробного рассмотрения этой проблемы и возможных решений см. Этот пост.

Это ошибка n00b, но я столкнулся с точно таким же исключением, когда импортировал файлы JSONKit.h и JSONKit.m в свой проект, но не установил флажок, чтобы добавить его к цели в XCode.

Откройте JSONKit.m, откройте раздел "Инспектор файлов" на панели "Служебные программы" и в разделе "Целевое членство" убедитесь, что рядом с вашим приложением установлен флажок.

Другие вопросы по тегам