Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

deepamalini

macrumors newbie
Original poster
Nov 12, 2008
4
0
Hi,

I need to have a hashmap in my application. so i used nsdictionary. But i insert the key-value pair in nsdictionary in one order, What i get from nsdictionary is in different order. Is there a way to accompany to put key-value pair in some datatype and retreive from it in same order?
 

xsmasher

macrumors regular
Jul 18, 2008
140
0
Hi,

I need to have a hashmap in my application. so i used nsdictionary. But i insert the key-value pair in nsdictionary in one order, What i get from nsdictionary is in different order. Is there a way to accompany to put key-value pair in some datatype and retreive from it in same order?

It's unusual to need keys in order. Usually order = array, key/value = dictionary. Many ways to handle it, though.

(1) Keep an array of keys along with the dictionary. Then loop through the array and use the keys to get the values. (You'll have to add your own checks to keep the same key from appearing in the array twice.)

(2)You could keep an array of custom objects, one custom object for each pair (give the object .key and .value properites) . That's a very object-oriented way, but you lose the ability to easily find the value for a key (you have to loop through the array.)

(3)You could keep two arrays of strings, one for keys and one for values.
to find a value for a key, you just use
Code:
keyIndex = [myKeys indexOfObject: keyIWant];
keyValue = [myValues objectAtIndex: keyIndex];

Anyone know a simpler solution? I'm assuming keyEnumerator doesn't preserver order.
 

deepamalini

macrumors newbie
Original poster
Nov 12, 2008
4
0
Hi,

I cant use two data structure to accompany this. Because I am sending this key-value pair from the server, since i am handling with huge data, I cant send both arrays and dictionary from the server, it will slow done the process. Is there any other way?
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.