Подтвердить что ты не робот

Ошибка компиляции iOS: нет видимого @interface для 'CDVCommandDelegateImpl' объявляет селектор 'execute:'

После обновления до последней версии Кордовы (3.6.3) я получаю эту ошибку при запуске команды cordova build ios.

Ошибка:

/Volumes/local.uhmuhm.net/projectxxx/htdocs/phonegap/src/Projectxxx/platforms/ios/Projectxxx/Classes/MainViewController.m:154:19: error: no visible @interface for 'CDVCommandDelegateImpl' declares the selector 'execute:' return [super execute:command];

Дополнительная информация:

  • Установленные платформы: android 3.6.3, ios 3.6.3

  • Я на последней версии xcode (6.0.1)

  • Все началось после обновления Кордовы до 3.6.3 (раньше я работал с 3.4.1)

Любая идея о том, как решить эту проблему?

enter image description here

4b9b3361

Ответ 1

Основываясь на том, что сказал Назар, единственная разница в значении при создании нового приложения и сравнении существующей папки platforms/ios/Classes заключалась в удалении метода execute из MainViewController.m.

file diff

Это очищает ошибку сборки для меня.

Ответ 2

Я исправил ту же проблему с

cordova platform remove ios
cordova platform add ios

Ответ 3

Запустите cordova create с новой версией кордовы, чтобы создать новый проект, а затем скопируйте AppDelegate и MainViewController поверх файлов в вашем "старом" проекте. После этого ошибка исчезла.

Ответ 4

У меня была такая же проблема сегодня. Я обнаружил, что файл CordovaLib/Classes/CDVCommandDelegateImpl.m не имеет этого:

- (BOOL)execute:(CDVInvokedUrlCommand*)command
{
    return [_commandQueue execute:command];
}

как это было в том же файле в последней версии Cordova 3.5.0. Поэтому я добавил этот фрагмент, а также соответствующее объявление в файле CDVCommandDelegateImpl.h:

- (BOOL)execute:(CDVInvokedUrlCommand*)command;

И теперь мое приложение работает! Не уверен, что это хорошее решение, но если оно работает, то это достаточно хорошо:)