为什么NSMutableDictionary控制台显示不同的值?

时间:2015-01-23 07:47:46

标签: ios iphone localytics

NSString* promocode = @"DISCOUNT20";
[attributes setObject:[promocode length]>0?promocode:@"Valid Promo Code" forKey:ATT_BookingPromoCode];
At Console:
{
  "Promo Code" = DISCOUNT20;
}

NSString* promocode = @"Jan20%";
[attributes setObject:[promocode length]>0?promocode:@"Valid Promo Code" forKey:ATT_BookingPromoCode];
At Console:
{
  "Promo Code" = "Jan20%";
}

为何获得引用差异? 我该怎么做才能避免这种情况?

需要知道差异,因为

我正在为Localytics准备词典,在某些情况下我得到[未指定]值。可能是这种情况正在发生,因为“值”没有被考虑..因为[Unspecifed]仅在您发送空值或空值时出现。但我已经为此设定了条件。虽然我在localytics得到了未指定的值。这就是为什么我在准备我要发送的字典时会出错。

提前致谢。

1 个答案:

答案 0 :(得分:1)

区别在于

NSString* promocode = @"Jan20%";

包含%(用于转义的字符),并且您实际打印的是字典而不是字符串对象

作为例子

NSDictionary *d = @{@"test1":@"Discount20", @"test2":@"jan20%"};
for (id key in [d allKeys]) {
    NSLog(@"%@", [d objectForKey:key]);
}
/* Output :
   Discount20
   jan20%
*/
NSLog(@"%@",d);
/* Output     
   {
    test1 = Discount20;
    test2 = "jan20%";
}