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?
            Asked
            
        
        
            Active
            
        
            Viewed 1.2k times
        
    15
            
            
        2 Answers
27
            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:
8
            
            
        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");
    }
        Ab'initio
        
- 5,368
 - 4
 - 28
 - 40
 
- 
                    Doesn't work when the object is nil or [NSNull null]. – gnasher729 May 30 '14 at 14:52