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

jsh*_*erk 14 cocoa-touch objective-c ios

对于iOS,给出了一些NSDictionary为其中加入字符串值的键/值对NSStringint/ float值加入作为NSNumber,是有办法来测试一个值的数据类型,看看它是否是NSStringNSNumber

bry*_*mac 25

NSObject提供:

- (BOOL)isKindOfClass:(Class)aClass
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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


Ab'*_*tio 7

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

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