2014-11-06 179 views
0

徽章值我試着從有效載荷獲取徽章的價值(在有效載荷:徽章= 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

這是因爲您正在將對象(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); 
+0

謝謝,我已經修改了代碼。絕對是一個很好的答案。 – Developer3000 2014-11-06 16:07:22

0

爲了一個NSNumber對象轉換爲int,你應該使用intValue選擇:

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

當你只使用(int)投它,您檢索對象的整數表示指針(如你懷疑的那樣)。

+0

感謝回答我,我修改了代碼。 – Developer3000 2014-11-06 16:08:23