如何检测NSDictionary项是否为整数?

时间:2013-07-05 17:30:00

标签: objective-c nsdictionary

我有一个带有2个项目的NSDictionary对象,第一个是NSString,第二个是Integer。当我循环进入字典项目时,我想检测它们是什么样的整数。

最好的方法是什么?

当前字典是:

[[NSDictionary alloc] initWithObjectsAndKeys:@"San", @"name", @"123", @"id", nil]

2 个答案:

答案 0 :(得分:3)

您放入字典中的项目绝不是整数,它是仅包含数字的NSString。为什么不直接使用NSNumber对象并以它应该的方式使用它?

[[NSDictionary alloc] initWithObjectsAndKeys:@"San", @"name", @123, @"id", nil]

这使用NSNumber的文字。

答案 1 :(得分:0)

您可以使用isKindOfClass:检查对象是否属于特定类,enumerateKeysAndObjectsUsingBlock:来分析字典中包含的每个对象。
例如:

NSDictionary *dictionary = @{@"name": @"San", @"id": @123};
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    if ([obj isKindOfClass:[NSNumber class]])
        NSLog(@"%@: %@ is a number", key, obj);
    else
        NSLog(@"%@: %@ is NOT a number", key, obj);
}];

第一行是使用文字创建的NSDictionary,同样适用于@123,它会自动在字典中插入带有123值的NSNumber