我尝试从有效负载中获取徽章的值(在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)
你有什么想法吗?提前致谢
答案 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);