2015-05-27 182 views
0

我有下面的代碼:無法轉換_NSCFNumber爲int

id value = characteristic.value; 
long valueBefore = (long)characteristic.value; 
int valueAfter = (int) valueBefore; 

將會產生以下值:

enter image description here

當我看值ID之我見「(長)6「這是我期望的值()。但是,當我把它扔到很長時間,我得到-5764..etc..781。這是爲什麼?

如何將值轉換爲值爲6的int?調試器說這個值是_NSCFNumber

回答

1

嘗試通過鑄造這樣的:

Datatype variable = [value integerValue]; 

希望它會幫助你。

+1

「typecasting」是發生在總是扮演類似角色的電影演員身上的事情。 「鑄造」是向編譯器顯式請求將一種類型的值轉換爲另一種類型的值。你在做什麼都不是,它正在調用一個NSNumber的方法。哪一個是正確的,但不是投射。左手邊應該有NSInteger類型。 – gnasher729

+0

@ gnasher729這就是我的錯誤,我寫了Typecasting而不是投射,在我的回答中,我剛剛給出了一個語法,在左邊我們可以添加適當的數據類型,右邊我們必須相應地放置代碼。 – iYoung

0

您需要使用longValue method才能從NSNumber對象獲取包裝值;你不能將對象轉換爲基本類型:

NSNumber *numobj = characteristic.value; 
long value = [numobj longValue]; 
3

您的代碼返回NSNumber所以你必須使用波紋管方法而不是投得到int值。

NSNumber *value = characteristic.value; 
long valueBefore = [value longValue] 
int valueAfter = [value intValue];