I have a record of 100 Electronic items with Categories in database, with every request I load 20 records in Table View. I want to merge 2 arrays into 3rd array
E.g.
1) NSMutableDictionary *prevResultSet;
2) NSMutableDictionary *newResultSet;
3) NSMutableDictionary *finalArray;
I tried using addEntriesFromDictionary but it overwrites the duplicate key instead of merging.
_finalArray = [[NSMutableDictionary alloc] init];
[_finalArray addEntriesFromDictionary:_prevResultSet];
[_finalArray addEntriesFromDictionary:_newResultSet];
_prevResultSet = {
LED = (
{
rate = "25,000";
type = Sony;
},
{
rate = "25,000";
type = Samsung;
},
);
LCD = (
{
rate = "15,000";
type = Samsung;
},
{
rate = "15,000";
type = Sony;
},
);
_newResultSet = {
LCD = (
{
rate = "15,000";
type = LG;
},
{
rate = "15,000";
type = Onida;
},
);
Current Output: (After using addEntriesFromDictionary:)
_finalArray = {
LED = (
{
rate = "25,000";
type = Sony;
},
{
rate = "25,000";
type = Samsung;
},
);
LCD = (
{
rate = "15,000";
type = LG;
},
{
rate = "15,000";
type = Onida;
},
);
Expected Output:
_finalArray = {
LED = (
{
rate = "25,000";
type = Sony;
},
{
rate = "25,000";
type = Samsung;
},
);
LCD = (
{
rate = "15,000";
type = Samsung;
},
{
rate = "15,000";
type = Sony;
},
{
rate = "15,000";
type = LG;
},
{
rate = "15,000";
type = Onida;
},
);
Thanks in advance...
Well, this is expected.
From the Documentation,
addEntriesFromDictionarytells that:You need to use setObject to add each object to the dictionary.YOu need to loop through the keys of one dictionary and add it to the final dictionary.
Even
setObjecttells the same:You cannot have two same keys in the dictionary. All keys in the dictionary are unique.
If you still want to have the same key-value in the dictionary, you must use a different key.
For example, you have two dictionaries with following values:
and by the end of this loop, your new mutable dictionaries will have the follwoing key-values:
As you can see, hello, and hello2 keys are renamed as Ext-hello1, Ext-hello2. form the dict1, and you still have all the dict2 values added to your mutable dict.
IF you don't want to add a new key, then you can add the values into an arrya and add that array to the dictionary. YOu can modify the for-loop to:
And now you will have the values merged into an array:
In this way, the number of keys will be same, and the values for the same key will be added as an array.