如何将NSInteger转换为int?

时间:2009-11-17 23:50:16

标签: objective-c cocoa nsinteger

例如,将value消息传递给NSInteger实例时,如此

[a value]会导致EXC_BAD_ACCESS。

那么如何将NSInteger转换为int

如果相关的只是小数字<使用了32个。

4 个答案:

答案 0 :(得分:194)

Ta da:

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

NSInteger只不过是32/64位int。 (它将根据您正在运行的操作系统/平台使用适当的大小)

答案 1 :(得分:28)

如果您想内联这样做,只需将NSUIntegerNSInteger投射到int

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

答案 2 :(得分:18)

我不确定您需要将NSInteger转换为int的情况。

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的任何地方使用{{1}}而不转换它。

答案 3 :(得分:0)

常用于UIsegmentedControl,"错误"在以64位而不是32位编译时出现,不将其传递给新变量的简单方法是使用此提示,添加(int)

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

而不是:

[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];