JSONkit and Exception handling
Having troubles with JSONKit and nil and null exceptions in occasions you can’t understand? This thing happened to me when trying to use something like “self.textview.text = [dictionary valueForKey:@”someKey”];” and I couldn’t understand why I kept receiving extensions about mismatch of the classes and NULL.
Well, the answer is that when JSONKit encounters a value that is NULL, it tries to translate it as accurately as it can to a value of NSDictionary. The correct equivalent would be “nil” but you can’t have an NSDIctionary holding a nil value, so JSONKit uses NSNull. So, when accessing NSDictionary values coming from a JSON source, you need to check for this probability too.
- (id)jsonFixedValueForKey:(NSString *)key { id value = [self valueForKey:key]; BOOL isNULLorNil = NO; if (value != nil) { if ([value isKindOfClass:[NSNull class]]) { isNULLorNil = YES; } }else{ isNULLorNil = YES; } if (isNULLorNil) { return nil; } return value; }
Just place the above code to a new category for NSDictionary and then use something like “[dict jsonFixedValueForKey:@”someKey”]” and now you will receive a nil where the JSON originally had “null”, or you will have the value that this key represents, no matter the class.