GAIDictionaryBuilder因NSNumber值而失败

时间:2014-05-14 16:39:26

标签: ios google-analytics nsmutabledictionary nsnumber

我正在尝试使用V3 SDK将商务交易数据发送到iOS上的谷歌分析。我正在使用Google提供的GAIDictionaryBuilder类构建数据字典(不幸的是,它不是开源的)。对于createTransactionWithId和createItemWithTransactionId调用,我的NSNumber值(收入,价格等)无法正确添加到字典数据中。以下是示例代码:

NSMutableDictionary* test = [[GAIDictionaryBuilder createTransactionWithId:(NSString *)transactionId
                                                                  affiliation:(NSString *)affiliation
                                                                      revenue:(NSNumber *)revenue
                                                                          tax:(NSNumber *)tax
                                                                     shipping:(NSNumber *)shipping
                                                                 currencyCode:(NSString *)currencyCode] build];
    NSLog(@"revenue: %@", revenue);
    NSLog(@"TR data: %@", test);

    // if I explicitly set the value, IT WORKS!!!!
    [test setObject:revenue forKey:@"&tr"];
    NSLog(@"TR data FIXED??: %@", test);

在输出中,我看到收入正确,然后在记录测试字典时,我看到对应于收入数据的以下行:

"&tr" = "<null>";

然后,对于手动修复尝试,我看到

"&tr" = "15.25";

正如所料。

以下是一些线索:

  • 我在不同的OSX机器上编译的不同项目中使用相同的代码,没有任何问题。
  • 交易在TRY(土耳其里拉),我怀疑谷歌正在尝试修复分隔符(','土耳其语对'''其他地方),但如上所述,另一个应用程序也在使用TRY。

所以问题是,为什么"<null>",为什么以及如何将正确的NSNumber转换为这个奇怪的值?

1 个答案:

答案 0 :(得分:0)

最后,我通过解决这个问题来解决这个问题。我将NSNumber分配给一个新的(通过获取其floatValue),它似乎修复了空值。

顺便说一句,谷歌分析库版本3.07自述文件提到了类似的问题,但3.03和3.07都没有解决我的问题。