objective-c - Obj-C 使用 isKindOfClass 确定整数值

标签 objective-c

我需要检查数组中每个元素的类型...

for(id obj in items) {
    if([obj isKindOfClass:[NSString class]]) {
       //handle string case
    } else if([obj isKindOfClass:[NSInteger class]]) {  //THIS LINE GIVES ERROR
       //handle int case
    }
}

当然 NSInteger 只是 int 的别名,那么我如何在运行时检查它呢?

最佳答案

您实际上不能将 NSInteger 存储在 NSArray 中,因为它不是对象。如果您在数组中存储数字,它们很可能是 NSNumber 的实例,因此您需要检查:

if ([obj isKindOfClass:[NSNumber class]]) { ... }

iPhone 开发人员提示 gives a good summary NSIntegerNSNumber 的区别。

关于objective-c - Obj-C 使用 isKindOfClass 确定整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1352489/

相关文章:

iphone - UILocalNotification 安排重复 10AM GMT 问题

objective-c - 如何使 super 成为 NSTimer 的目标?

objective-c - applicationShouldTerminate 和 NSURLConnection

iphone - 当 Gesture 应用于 self.view 时,我们如何才能使 TableView 工作?

objective-c - 处理 awakeFromNib 中的错误的正确方法是什么?

iphone - 递归方法中的 NSMutableArray 内存泄漏

iOS 应用程序 : Terminated due to memory issue [Related to swiftSlowAlloc or UIImage]

ios - NSMutableData 错误

objective-c - 升级到 Xcode 4.1 和 sqlite3.h 导致编译错误,而升级前没有

iphone - 结构构造函数错误 "Expected specifier-qualifier-list before"