2012-09-24 40 views
0

我想抓住一個NSInteger的值,併爲其設置一個UILabel值。代碼如下:獲取NSInteger值

counter_.text = [NSString stringWithFormat:@"%@", [counterAmount intValue]]; 

其中counter_是我的標籤,counterAmount是我的NSInteger。我不斷收到一個「接收器類型'NSInteger *'(又名'int *')不是'id'或接口指針,考慮將其轉換爲id。你的幫助。

回答

1

intValue是一個NSNumber方法返回一個C原始值。%@打印的對象。爲了輸出一個C原始值,你必須在格式化字符串提供類型。%d是有符號整數類型

根據這個問題,以及正如下面borrden指出的那樣,我在這裏處理的類型是NSInteger而不是NSNumber。在iOS中,NSIntegerint的typedef,因此您直接處理原始類型。 NS前綴並不意味着它是一個對象。

+1

counterAmount是一個'NSInteger',所以這個答案是不正確的。 – borrrden

+0

您暗示我誤解了這個問題是完全正確的,並且我已經適當地編輯了我的答案,以便潛在的誤導性信息不會持續存在。 – Tommy

+0

作爲迴應,我刪除了我的反對票。感謝編輯。 – borrrden

1

由於counterAmount是NSInteger,你不能用它intValue(因爲它不是一個對象,你不能發送任何消息吧,其實)。

相反,使用:

counter_.text = [NSString stringWithFormat:@"%d", counterAmount]; 

現在這樣說,如果要顯示該值的用戶,你真的應該使用一個數字格式化,使其格式化,他們已經建立起來的方式在設置應用程序中顯示:

NSNumber *number    = [NSNumber numberWithInt:counterAmount]; 

NSNumberFormatter *formatter = [NSNumberFormatter new]; 
formatter.numberStyle   = NSNumberFormatterDecimalStyle; // Or whichever style is appropriate for your number. 

counter_.text     = [formatter stringFromNumber:number];