2014-05-14 101 views
1

我試圖使用V3 SDK將商業交易數據發送到iOS上的谷歌分析。我正在使用Google提供的GAIDictionaryBuilder類構建數據字典(不幸的是,這不是開源的)。對於createTransactionWithId和createItemWithTransactionId調用,我的NSNumber值(收入,價格等)未能正確添加到字典數據中。下面是示例代碼:GAIDictionaryBuilder無法獲取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轉換爲這個奇怪的值?

回答

0

最終,我通過解決問題來解決問題。我將NSNumber分配給一個新的(通過獲取其floatValue),它似乎修復了空值。

順便說一下,谷歌分析庫3.07版自述文件提到了一個類似的問題,但修正了3.03和3.07都沒有解決我的問題。