2013-04-03 105 views
4

我在android上有一个phonegap项目。 这个不错,但是当我在phonegap网站上编译时,我在ios版本上遇到了一些问题。错误phonegap xcode

所以我尝试使用Xcode中使用Xcode模拟器,但我有folloing错误:

2013-04-03 21:29:27.261 Assas[2339:c07] Multi-tasking -> Device: YES, App: YES 
2013-04-03 21:29:28.455 Assas[2339:c07] [LOG] true 
2013-04-03 21:29:28.940 Assas[2339:c07] -[__NSCFArray dataUsingEncoding:allowLossyConversion:]: unrecognized selector sent to instance 0x8939150 
2013-04-03 21:29:28.942 Assas[2339:c07] *** Terminating app due to uncaught exception  'NSInvalidArgumentException', reason: '-[__NSCFArray dataUsingEncoding:allowLossyConversion:]:  unrecognized selector sent to instance 0x8939150' 
*** First throw call stack: 
(0x14c012 0x25a2e7e 0x1d74bd 0x13bbbc 0x13b94e 0x163b0 0x16243 0x5bbdb 0x5b32c 0x5aedd  0x5b075 0x5af93 0x25b66b0 0x1125765 0xcff3f 0xcf96f 0xf2734 0xf1f44 0xf1e1b 0x33d37e3  0x33d3668 0x387ffc 0x214c 0x20a5) 
libc++abi.dylib: terminate called throwing an exception 

我把我的WWW文件夹在我的Android项目的内容,我只是改变了config.xml和科尔多瓦jsfile

我使用的PhoneGap 2.4.0两个项目

编辑:

的错误是在其他资料来源/ main.m文件

#import <UIKit/UIKit.h> 

int main(int argc, char* argv[]) 
{ 
    @autoreleasepool { 
     int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); 
     return retVal; 
    } 
} 

在第6行

由于

+0

没有人发现这个问题的解决方案?我目前正在努力... – 2013-06-17 19:17:19

+0

嗨,在我的情况下,这是由于一个错误的JSON饲料 – Ajouve 2013-06-17 19:56:36

+0

嗨,你能解释一点吗?在我的情况下,当我尝试将JSON保存到文件系统时,它会引发异常。 – 2013-06-18 07:40:38

回答

0

科尔多瓦JavaScript是Android和IOS不同。所以当你复制你的www时,确保你用ios的cordova.js替换android的cordova.js。

+0

感谢您的回答。但我更改我的dordova.js – Ajouve 2013-04-03 21:11:32

0

您的应用程序正在使用自动引用计数(这是新的),Phonegap目前还不支持它。解决方案如下:

1. 转到您项目的构建设置并关闭自动引用计数。从YES 构建设置 - 用户自定义 - CLANG_ENABLE_OBJC_ARC-更改为无

2. 危险/坏,但解决的错误:删除@autoreleasepool,代码似乎是 int main(int argc, char* argv[]) { int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); return retVal; }

+0

谢谢,我将CLANG_ENABLE_OBJC_ARC设置为no,我也尝试删除@autoreleasepool,但在每种情况下,我都有同样的问题 – Ajouve 2013-04-04 07:24:42

0

对于我来说,我将重新排列我的插件的JavaScript文件中的插件参数的顺序,但我没有在iOS代码中反映这些更改。我送字符串,多头和INTS的组合在我的插件参数:

// Old javascript 
cordova.exec(success, fail, "MyPlugin", "PluginMethod", [0, 758493037474, "String"]); 

// New javascript 
cordova.exec(success, fail, "MyPlugin", "PluginMethod", ["String", 0, 758493037474]); 

确保太更新您的后端代码(不废话了吧!)

// Old objective C 
int myid    = [command.arguments objectAtIndex:0]; 
double mydouble  = [[command.arguments objectAtIndex:1] doubleValue]; 
NSString *mystring = [command.arguments objectAtIndex:2]; 

// New objective C 
NSString *mystring = [command.arguments objectAtIndex:0]; 
int myid    = [command.arguments objectAtIndex:1]; 
double mydouble  = [[command.arguments objectAtIndex:2] doubleValue];