web-dev-qa-db-ja.com

NSIntegerをNSNumberにキャストすることは可能ですか?

簡単な質問-NSIntegerをNSNumberオブジェクトにキャストすることは可能ですか? UIImageViewオブジェクトのタグをNSNumberオブジェクトに変換する必要があります。関数に引数として渡す必要があるためです。

38
Fitzy

NSIntegerはオブジェクトではなく、単なる組み込み型のエイリアスであるため、castできません。次のように、NSNumberからいつでも新しいNSIntegerオブジェクトを作成できます。

NSNumber *myNum = @(myNsIntValue);

または、以前のバージョンのコンパイラでは、次を使用します

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
104
dasblinkenlight

Apple LLVM Compiler 4.0NSNumberオブジェクトを作成する簡単な方法があります。

NSNumber *x = @1234; 
NSNumber *y = @(anIntegerVariable);
18
Brian

これはより正解であり、予期しないエラーは発生しません。

NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];

ドキュメントが言ったので:

「numberWithInteger:指定された値を含むNSNumberオブジェクトを作成して返し、NSIntegerとして扱います。」

「numberWithInt:指定された値を含むNSNumberオブジェクトを作成して返し、それを符号付きintとして扱います。」

7
Kevin