使用NSDictionary,您可以确定值的数据类型吗?

时间:2012-07-11 03:59:15

标签: objective-c ios cocoa-touch

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

2 个答案:

答案 0 :(得分:25)

NSObject提供:

- (BOOL)isKindOfClass:(Class)aClass

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

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

如果你检查这些并且你不希望字典中有NSString或NSNumber,那么我会在else块中添加一个NSAssert。

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

In Objective-C, how do I test the object type?

答案 1 :(得分:6)

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

if ([[dictionary valueForKey:@"key"] isKindOfClass:[NSString class]]) {
        NSLog(@"it is a string");
    }
    else {
        NSLog(@"it is number");
    }