检查对象是否为NSInteger

mon*_*bre 25 iphone cocoa cocoa-touch objective-c

我希望检查一个对象的类型,对于NSString:

[theObject isKindOfClass:[NSString class]]
Run Code Online (Sandbox Code Playgroud)

它有效,但对于NSInteger

[theObject isKindOfClass:[NSInteger class]]
Run Code Online (Sandbox Code Playgroud)

将报告错误

欢迎任何评论

Boo*_*eus 52

使用NSNumber类:

if ([obj isKindOfClass:[NSNumber class]]) { ... }
Run Code Online (Sandbox Code Playgroud)

NSNumber从NSValue继承:NSObject

NSInteger 用于描述整数.

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
Run Code Online (Sandbox Code Playgroud)


Eti*_*tel 11

NSInteger不是Objective-C类.它是整数类型的typedef.因此,对象永远不会成为NSInteger.

您正在寻找的是NSNumber类,它是Objective-C类.


gse*_*mpe 6

NSInteger不是对象类型.它是基础数据类型.Checkout Foundation数据类型参考以了解它是如何定义的.