jsherk
jsherk

Reputation: 6472

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?

Upvotes: 15

Views: 12824

Answers (2)

bryanmac
bryanmac

Reputation: 39296

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?

Upvotes: 27

Ab'initio
Ab'initio

Reputation: 5418

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");
    }

Upvotes: 9

Related Questions