iOS Apptentive SDK - NSInvalidArgumentException из `[установки NSManagedObject]`

Я новичок в программировании iOS. Я хочу использовать систему обратной связи с Apptentive SDK в моем первом приложении. Нет ошибок при компиляции, но когда он начинает устанавливать соединение с сервером Apptentive, я получаю следующее сообщение об ошибке:

2013-07-11 15:32:19.438 wishes[11015:c07] Loading ATWebClient_Metrics_Bootstrap
2013-07-11 15:32:19.438 wishes[11015:c07] Loading ATWebClient_SurveyAdditions_Bootstrap
2013-07-11 15:32:19.439 wishes[11015:c07] Loading ATURLConnection_Private_Bootstrap
2013-07-11 15:32:19.439 wishes[11015:c07] Loading ATWebClient_Private_Bootstrap
2013-07-11 15:32:19.439 wishes[11015:c07] Loading ATWebClient_MessageCenter_Bootstrap
2013-07-11 15:32:19.440 wishes[11015:c07] Loading ATToolbar_Bootstrap
2013-07-11 15:32:19.442 wishes[11015:1303] [info] Setting up data manager
2013-07-11 15:32:19.598 wishes[11015:1d03] [info] Creating conversation
**2013-07-11 15:32:19.616 wishes[11015:c07] -[NSManagedObject setup]: unrecognized selector sent to instance 0xa060110
2013-07-11 15:32:19.618 wishes[11015:c07] ** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject setup]: unrecognized selector sent to instance 0xa060110'
** First throw call stack:
(0x2ef4012 0x23a0e7e 0x2f7f4bd 0x2ee3bbc 0x2ee394e 0xbc347 0xbc29f 0xf8f5b3 0x2eb3376 0x2eb2e06 0x2e9aa82 0x2e99f44 0x2e99e1b 0x2e4e7e3 0x2e4e668 0x26bffc 0x2afd 0x2a25)
libc++abi.dylib: terminate called throwing an exception**

При поиске на форумах я обнаружил, что это может быть проблемой CoreData, которую использует Apptentive SDK, но пока я пишу, я новичок в разработке для iOS, поэтому до сих пор не использовал CodeData.

Код для начала подключения:

ATConnect *connection = [ATConnect sharedConnection];
connection.apiKey = @"myApiKey";
[connection presentMessageCenterFromViewController:self];

Когда я раскомментирую строку с apiKey assign, ошибки нет.

Пожалуйста, помогите мне, если сможете.

2 ответа

Решение

Проблема в том, что Apptentive использует такие категории, как setup на NSManagedObject, но в вашей системе эти категории не загружаются. Эта проблема довольно сложна для понимания, и ее решение носит мутный характер и зависит от версии Xcode, которую вы используете.

Чтобы заставить категории загружаться с помощью кувалды, добавьте это в "Другие флаги компоновщика":

-all_load

Если это работает, попробуйте это лучшее решение (сменив "" на его настоящее имя:

-force_load $(BUILD_PRODUCTS_DIR)/<apptentive_library_name>.a 

Если это работает, то вы можете попробовать использовать этот флаг:

-ObjC

Если вы будете искать на этом сайте термины "all_load", "force_load" и "-ObjC", вы найдете множество сообщений.

В Руководстве по настройке проекта Apptentive мы рекомендуем следующее "Другие флаги компоновщика:

Цель> Настройки сборки> Другие флаги компоновщика:

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