从有效负载中获取徽章值

时间:2014-11-06 15:35:46

标签: ios objective-c xcode

我尝试从有效负载中获取徽章的值(在payload:badge = 1;中),但该值看起来更像是内存地址:

int badgeValue = (int)[notification objectForKey:@"badge"];
NSLog(@"Value of badge(middle) is : %d", badgeValue);
Value of badge(middle) is : 392626528 (this is from console)

你有什么想法吗?提前致谢

2 个答案:

答案 0 :(得分:0)

要将NSNumber对象转换为int,您应该使用intValue选择器:

int badgeValue = [[notification objectForKey:@"badge"] intValue];

当你使用(int)投射它时,你正在检索对象指针的整数表示(如你所怀疑的那样)。

答案 1 :(得分:0)

这是因为您正在向NSNumber投射对象(int)。所有这一切都是将对象的内存引用放入int。

你需要的是这样......

NSNumber *badgeValue = [notification objectForKey:@"badge"];
NSLog(@"Value of badge(middle) is : %@", badgeValue);

如果您想使用int (注意,您不应该使用int,那么您应该使用NSInteger,然后再使用类似的内容。 ..

NSInteger badgeValue = [[notification objectForKey:@"badge"] integerValue];
NSLog(@"Value of badge(middle) is : %ld", (long)badgeValue);