I am trying to retrieve the value for a key in a NSDictionary. The dictionary has been initialised with key value pairs both of type string. The trouble is, I cannot seem to retrieve the value with I call objectForKey or valueForKey.
I am able to iterate over the dictionary and print both keys and values.
Can someone point out where im going wrong? Here is my code…
//Set up dictionary with options
keys = [NSArray arrayWithObjects:@"red", @"blue", nil];
values = [NSArray arrayWithObjects:@"1.7", @"2.8", nil];
conversionOptions = [NSDictionary dictionaryWithObject:values
forKey:keys];
Then this is called on the select row in a picker
NSLog(@"... %@", [keys objectAtIndex:row]); //prints out the key
NSString *theString = [keys objectAtIndex:row]; //save it as a string
NSLog(@"The string is... %@", theString); //print it out to make sure im not going crazy
NSLog(@"the value is : %@",[conversionOptions objectForKey:theString]); // I just get NULL here
//NSLog(@"the value is : %@",[conversionOptions valueForKey:theString]); // This doesn't work either, I just get NULL
You’re creating a dictionary with an array as the only key and an array for its value! You want the
dictionaryWithObjects:forKeys:(plural) factory, notdictionaryWithObject:forKey:(singular) so that each element of the keys array will be used as a distinct key for the respective element of the values array.I find the
dictionaryWithObjectsAndKeys:factory to be more useful most of the time, e.g.: