2012-03-14 131 views
36

快速問題 - 是否可以將NSInteger轉換爲NSNumber對象?我需要將UIImageView對象的標籤轉換爲NSNumber對象,因爲我需要將它作爲參數傳遞給函數。是否可以將NSInteger轉換爲NSNumber?

+0

這是絕對有可能投一個NSInteger到一個NSNumber *。結果很可能導致崩潰。當然,如果你有一個數字x,你可以使用@(x)創建一個值爲x的NSNumber對象。哪個會起作用,但不是演員。 – gnasher729 2014-05-11 21:26:39

回答

99

你不能轉換它因爲NSInteger不是一個對象,只是一個內置類型的別名。你總是可以從NSInteger創建一個新的NSNumber對象,像這樣:

NSNumber *myNum = @(myNsIntValue); 

或編譯器的早期版本,使用

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue]; 
+1

此答案在新的64位設備上產生警告。請參閱下面的@ Kevin更準確的答案。 – 2014-01-05 17:33:23

+0

@FullDecent編輯,謝謝! – dasblinkenlight 2014-01-05 18:37:02

6

這是比較正確的答案,它不會產生意外錯誤。

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue]; 

由於DOC表示:

「numberWithInteger: 創建並返回包含一個給定的值一個NSNumber對象,將它視爲一個NSInteger」

「numberWithInt: 創建並返回一個包含給定值的NSNumber對象,將其視爲一個帶符號的int。」

15

因爲Apple LLVM Compiler 4.0,有創造NSNumber對象更簡單的方法:

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable); 
+1

NSNumber * z = @(aDoubleValue);工作也一樣。 – gnasher729 2014-05-11 21:27:24