我为具有多个年龄段的客户构建应用程序,供用户选择。例如,我有一个标有年龄范围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++);
}
};
答案 0 :(得分:1)
查看方法setAge
的iOS代码,您只能将单个值传递给方法。即使JS方将此接受为数组[age]
,这只是Cordova处理程序可以轻松传递数据。
iOS方法正在引用:
int Age = [[command.arguments objectAtIndex:0]integerValue];
其中只是声明它正在将对象的第一个索引转换为true int。如果将数组作为对象的第一个索引传递,则代码将失败,因为它无法将数组转换为int。
我建议将18-24
更改为1824
,这样您就可以将年龄范围捕获为int,然后只传递该字符串而不是int字符串数组。
此外,如果您需要捕获所有值,则可以逐个为每个值递归调用setAge
。