iOS编译错误:'CDVCommandDelegateImpl'声明选择器'execute:'不可见@interface'

问题描述:

在升级到最新的Cordova版本(3.6.3)时,运行cordova build ios命令时出现此错误。iOS编译错误:'CDVCommandDelegateImpl'声明选择器'execute:'不可见@interface'

错误:

/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]; 

其他信息:

  • 安装平台:安卓3.6.3,IOS 3.6.3

  • 我在最后的xcode版本(6.0.1)

  • 一切升级科尔多瓦3.6.3之后开始(我是在此之前,运行3.4.1)

如何解决这个任何想法?

enter image description here

+0

降为科尔多瓦3.5,一切都恢复正常。 – 2014-09-22 15:03:07

固定同样的问题建立在什么纳扎尔说,唯一的创建新的应用程序时,和比较现有platforms/ios/Classes文件夹从MainViewController.m取出execute方法意义不同。

file diff

这清除了生成错误对我来说。

+1

谢谢!我真的没有胃去除/重建我的ios平台! – 2014-10-02 11:59:31

+1

做了上面的删除/添加步骤删除了一些我已经提交给Git的东西,所以通过这条路线对我来说是一个更好的选择来解决这个问题。感谢您发布此信息。 – jkwuc89 2014-10-03 21:12:03

+0

这也适用于我,虽然我不喜欢修改这些不直接属于我的项目的文件。任何人都可以在版本控制中包含这些修改后的文件,并允许cordova做它的事情? – DenisH 2014-10-08 12:15:34

今天我有同样的问题。我找到了那CordovaLib /班/ CDVCommandDelegateImpl.m文件不具有这样的:

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

因为它是在同一文件中的最新科尔多瓦3.5.0。 所以我加入这个片段,并适当申报CDVCommandDelegateImpl.h文件:

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

现在我的应用程序运行!不知道这是很好的解决方案,但如果它的工作原理则是不够好:)

运行cordova create新版本科尔多瓦创建新的项目,然后在你的“旧”项目文件复制AppDelegateMainViewController。之后,错误消失了。

+0

谢谢!你救了我的一天 – BrendanMullins 2014-10-24 08:24:49

我已经与

cordova platform remove ios 
cordova platform add ios 
+0

太棒了!要试一试。 – 2014-09-23 08:18:08

+5

这将删除您在该目录中拥有的所有源文件,只是知道 – user2217751 2014-09-23 15:09:16

+1

您应该将所有源代码放入www并合并根目录中不会被删除的文件夹。 – 2014-09-24 10:19:53