如何将数组作为参数传递给使用iOS的phonegap插件的函数

我正在为iOS编写一个phonegap插件。 在JavaScript文件中 ,我需要将一些数组传递给我的函数。 但是,在.m文件中, [arguments count]只显示我传递给我的函数的'string'参数的个数。 这意味着,传递给我函数的数组在.m文件中无法被理解/看到。

以下是塞纳里奥:

 In test.js, I call test() function with 2 arrays and 1 string. 
 In MyPlugin.m, in test() function, however, the number of arguments shown is only 1.

----------- plugin.js --------------------
function MyPlugin(){
};

MyPlugin.prototype.test = function(arg1, arg2, arg3){
   PhoneGap.exec('MyPlugin.test', arg1, arg2, arg3);
}

//.....code is omitted......
------------------------------------------

---------------declare plugin----------------
function onDeviceReady() {
   myPlugin = window.plugins.plugin;
}
--------------------------------------------------

-----------test.js where function is called----------------
function testPlugin(){
   var arr1 = new Array(),
        arr2 = newArray(),
        text = 'sample string';
   myPlugin.test(arr1, arr2, text);
};
-----------------------------------------------------------------------

--------------MyPlugin.m--------------------------
-(void)test:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options
{
   NSUInteger argc = [arguments count];
   NSLog(@"Number of arguments: %d", argc);     //output: Number of arguments: 1

   NSString *text = [arguments objectAtIndex:0]; 
   NSLog(@"%@", text);   //output: sample string
}
---------------------------------------------------------

所以我的问题是如何将数组传递给iOS的phonegap插件中的javascript函数。

谢谢


我解决这个问题的方法是将数组串化,并将它们作为字符串传递给函数。 然后在.m文件中,我将这些字符串解析为数组。

解决了这个问题。 但是,如果你知道任何其他解决方案,请做推荐。

谢谢,


我偶然发现了同样的问题,并在这里找到了另一个解决方案:

https://groups.google.com/forum/?fromgroups#!topic/phonegap/Agy_9r_7FAc

从cordova.exec函数传递给本机iOS代码的对象/数组存储在options array参数中。 像字符串,整数等常规参数存储在参数数组参数中。

链接地址: http://www.djcxy.com/p/64383.html

上一篇: How to pass array as argument to a function using phonegap plugin for iOS

下一篇: mingw+libarchive: cross compiling linker error