web-dev-qa-db-ja.com

iOSコンパイルエラー:「CDVCommandDelegateImpl」の目に見える@interfaceがセレクター「execute:」を宣言しない

最新のCordovaバージョンにアップグレードした後(.6.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.

  • 私は最新のXcodeバージョン(6.0.1)を使用しています

  • Cordovaを3.6.3にアップグレードした後にすべてが始まりました(その前に3.4.1を実行していました)

これを解決する方法についてのアイデアはありますか?

enter image description here

42
Marco Magrini

Nazarが述べたことに基づいて、新しいアプリを作成して既存のplatforms/ios/Classesフォルダーを比較するときの重要な違いは、MainViewController.mからexecuteメソッドを削除することだけでした。

file diff

これにより、ビルドエラーが解消されます。

44
SKFox

私は同じ問題を修正しました

cordova platform remove ios
cordova platform add ios
29

実行cordova create新しいCordovaバージョンで新しいプロジェクトを作成し、AppDelegateおよびMainViewControllerを「古い」プロジェクトのファイルにコピーします。その後、エラーはなくなります。

13
Nazar Ivanenko

今日も同じ問題がありました。 CordovaLib/Classes/CDVCommandDelegateImpl.mファイルにはこれがないことがわかりました。

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

最新のCordova 3.5.0の同じファイルにあったためです。そのため、私はこのスニペットと適切な宣言をCDVCommandDelegateImpl.hファイルに追加しました。

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

そして今、私のアプリが実行されています!これが良い解決策であるかどうかはわかりませんが、うまくいけば十分です:)