Как передать массив в качестве аргумента функции, используя плагин phonegap для iOS - PullRequest
2 голосов
/ 25 июля 2011

Я пишу плагин PhoneGap для iOS.В файле javascript мне нужно передать в мою функцию несколько массивов .Однако в файле .m , [arguments count] показывает только количество строковых аргументов, которые я передал своей функции.Это означает, что массивы, переданные моей функции, не поняты / не видны в файле .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
}
---------------------------------------------------------

Поэтому мой вопрос заключается в том, как передать массивыФункция JavaScript в плагине PhoneGap для iOS.

Спасибо

Ответы [ 2 ]

0 голосов
/ 31 июля 2012

Я наткнулся на эту же проблему и нашел другое решение здесь:

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

Объекты / массивы, которые передаются из функции cordova.exec в собственный код iOS,хранятся в параметре массива параметров.Обычные аргументы, такие как строки, целые числа и т. Д., Хранятся в параметре массива arguments.

0 голосов
/ 28 июля 2011

Мое решение этой проблемы состоит в том, что я преобразую массивы в массив и передаю их функции в виде строки.Затем в файле .m я разбираю эти строки в массивы.

Это решает проблему.Но если вам известны какие-либо другие решения, пожалуйста, порекомендуйте.

Спасибо,

...