15

对于 iOS,给定一些NSDictionary键/值对,其中字符串值添加为NSStringint/float值添加为NSNumber,有没有办法测试值的数据类型以查看它是NSString还是NSNumber

4

2 回答 2

26

NSObject 提供:

- (BOOL)isKindOfClass:(Class)aClass

如果 obj 是您从 NSDictionary 中获得的值,则结帐:

[obj isKindOfClass:[NSString class]]
[obj isKindOfClass:[NSNumber class]]

如果您检查这些并且您不期望字典中除了 NSString 或 NSNumber 之外的任何内容,那么我将在 else 块中添加一个 NSAssert 。

这里有更多关于 NSString 和 NSCFString 细微差别的评论:

在 Objective-C 中,我如何测试对象类型?

于 2012-07-11T04:02:18.980 回答
7

字典返回一个 id 你可以检查它的类类型如下

if ([[dictionary valueForKey:@"key"] isKindOfClass:[NSString class]]) {
        NSLog(@"it is a string");
    }
    else {
        NSLog(@"it is number");
    }
于 2012-07-11T04:28:02.733 回答