web-dev-qa-db-ja.com

NSIntegerをintに変換する方法は?

たとえば、valueメッセージをNSIntegerインスタンスに渡す場合

[a value] EXC_BAD_ACCESSが発生します。

NSIntegerintに変換する方法は?

関連する場合は、32未満の小さな数字のみが使用されます。

92
Jeffrey

タダ:

NSInteger myInteger = 42;
int myInt = (int) myInteger;

NSIntegerは32/64ビット整数にすぎません。 (実行しているOS /プラットフォームに基づいて適切なサイズを使用します)

197
Dave DeLong

このインラインを実行する場合は、NSUIntegerまたはNSIntegerintにキャストするだけです。

int i = -1;
NSUInteger row = 100;
i > row // true, since the signed int is implicitly converted to an unsigned int
i > (int)row // false
28
Samuel Clay

NSIntegerintに変換する必要がある状況についてはわかりません。

NSIntegerは単なるtypedefです。

NSInteger 32ビットシステムと64ビットシステムのどちらで構築するかに関係なく、整数を記述するために使用します。

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 
typedef long NSInteger;
#else
typedef int NSInteger;
#endif

NSIntegerを使用する場所は、intを変換せずに使用できます。

18
Abizern

UIsegmentedControlで一般的に使用され、32ビットではなく64ビットでコンパイルすると「エラー」が表示されます。新しい変数に渡さないための簡単な方法は、このヒントを使用して(int)を追加することです

[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];

の代わりに :

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];
0
grominet