Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to retrieve String from NSDictionary in objective C?

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
like image 650
BON Avatar asked Mar 22 '26 16:03

BON


2 Answers

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, not dictionaryWithObject: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.:

conversionOptions = [NSDictionary dictionaryWithObjectsAndKeys:@"1.7", @"red", @"2.8", @"blue", nil];
like image 58
pmdj Avatar answered Mar 24 '26 05:03

pmdj


This is how you retrieve a string from a dictionary object

NSString * string = [dictionary objectForKey:@"stringKey"];

like image 44
Fernando Cervantes Avatar answered Mar 24 '26 06:03

Fernando Cervantes



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!