I am trying to get the value of "@type" key in the following NSDictionary named 'robotDesign'
robotDesign : {
"@id" = "2";
"@type" = "piggyDash";
turnAngle = "-90";
width = "90.0";
}
that is a part of a JSON object I got using
[NSJSONSerialization JSONObjectWithData: options: error:];
I am using following code to extract @type value
NSString * robot_type = (NSString*)[robotDesign valueForKey:@"@type"];
but recive following error:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFDictionary 0x71de9e0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key type.'
NOTE: Please note that other objects in dictionary like 'turnAngle' and 'width' are extracted easily using same code given above but with their respective keys.
try
NSString * robot_type = [robotDesign objectForKey:@"@type"];
or remove the leading @
from the docs:
valueForKey:
Returns the value associated with a given key.
- (id)valueForKey:(NSString *)key
Parameters key The key for which to return the corresponding value. Note that when using key-value coding, the key must be a string (see “Key-Value Coding Fundamentals”).Return Value
The value associated with key.Discussion If key does not start with “@”, invokes objectForKey:. If key does start with “@”, strips the “@” and invokes [super valueForKey:] with the rest of the key.
The @
leads to call the implementation of the valueForKey:
of the superclass of NSDictionary. But NSObject does not know anything about the key type
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With