将数组传递给Flurry的setAge(Cordova)

时间:2014-08-18 20:55:02

标签: javascript ios cordova flurry

我为具有多个年龄段的客户构建应用程序,供用户选择。例如,我有一个标有年龄范围18-24的按钮。我的问题是,我是否允许将数组中的多个整数传递给window.plugins.flurry.setAge();

我有以下代码:

var setAge = function(low,high) {
    var ageLow = low;
    var ageHigh = high;
    var age = [];  
    while(ageLow <= ageHigh){
        age.push(ageLow++)
    }
    window.plugins.flurry.setAge(age);
};

$('#set-age-one').on('click', function() {
    setAge(18,24);
});

在Xcode中查看Flurry的详细模式时,我确认18-24的值确实设置正确。但是,它后跟错误代码AppName[31368:60b] -[__NSArrayM integerValue]: unrecognized selector sent to instance 0x10ae1bd10

这并不会以任何方式终止或破坏应用,但我想知道这是否能正确输出到Flurry的受众&gt;用户仪表板上的年龄部分。我可以等待6-8个小时让仪表板更新并找出答案,但我还是比较清楚。

编辑:这是我使用

插件的link

此外,这里是Xcode的完整摘录:

2014-08-18 13:42:49.500 AppName[31904:60b] Setting Flurry Age to (
    18,
    19,
    20,
    21,
    22,
    23,
    24
)
2014-08-18 13:42:49.500 AppName[31904:60b] -[__NSArrayM integerValue]: unrecognized selector sent to instance 0x10aa00760

解: 如果有人为自己的项目遇到此问题,以下日志记录一个年龄范围的整数:

var setAge = function(low,high) {
    var ageLow = low;
    var ageHigh = high;
    while(ageLow <= ageHigh) {
        window.plugins.flurry.setAge(ageLow++);
    }
};

1 个答案:

答案 0 :(得分:1)

查看方法setAge的iOS代码,您只能将单个值传递给方法。即使JS方将此接受为数组[age],这只是Cordova处理程序可以轻松传递数据。

iOS方法正在引用:

int Age = [[command.arguments objectAtIndex:0]integerValue];

其中只是声明它正在将对象的第一个索引转换为true int。如果将数组作为对象的第一个索引传递,则代码将失败,因为它无法将数组转换为int。

我建议将18-24更改为1824,这样您就可以将年龄范围捕获为int,然后只传递该字符串而不是int字符串数组。

此外,如果您需要捕获所有值,则可以逐个为每个值递归调用setAge