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, откройте раздел "Инспектор файлов" на панели "Служебные программы" и в разделе "Целевое членство" убедитесь, что рядом с вашим приложением установлен флажок.