Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

With an NSDictionary, can you determine data type of the value?

For iOS, given some NSDictionary key/value pairs where strings values were added as NSString and int/float values were added as NSNumber, is there a way to test the data type of a value to see whether it is NSString or NSNumber?

like image 340
jsherk Avatar asked Jul 11 '12 03:07

jsherk


2 Answers

NSObject offers:

- (BOOL)isKindOfClass:(Class)aClass

if obj is the value you get out of the NSDictionary then checkout:

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

If you check for these and you don't expect anything but NSString or NSNumber in the dictionary, then I would add an NSAssert in the else block.

There's more comments here on nuances of NSString and NSCFString:

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

like image 176
bryanmac Avatar answered Nov 16 '22 03:11

bryanmac


Dictionary return an id you can check its class type as follows

if ([[dictionary valueForKey:@"key"] isKindOfClass:[NSString class]]) {
        NSLog(@"it is a string");
    }
    else {
        NSLog(@"it is number");
    }
like image 32
Ab'initio Avatar answered Nov 16 '22 01:11

Ab'initio