У меня есть изменяемый массив, которые состоят из множества словарей, как:Заменить все ключи в массиве словаря в какао
NSArray *myArray
({
{
"COL_1" = Jhon;
"COL_2" = 01/27/13;
"COL_3" = THAILAND;
"COL_4" = 5000;
"COL_5" = No;
},
{
"COL_1" = Peter;
"COL_2" = 01/27/13;
"COL_3" = US;
"COL_4" = 4000;
"COL_5" = No;
}
})
Все словари в массиве имеют одинаковые ключи. Я хочу заменить существующие ключи новым набором ключей, которые будут поступать из NSArray. Окончательный массив должен быть как -
NSArray *myArray
({
{
"A" = Jhon;
"B" = 01/27/13;
"C" = THAILAND;
"D" = 5000;
"E" = No;
},
{
"A" = Peter;
"B" = 01/27/13;
"C" = US;
"D" = 4000;
"E" = No;
}
})
Я не хочу, вложенную цикл, в котором я должен повторять Overs каждый элементы в массиве и снова для каждого словаря, итерация каждой клавиши, чтобы изменить ключи. То, что я сделал это следующим образом:
NSArray *myDictFnalKeys = [NSArray arrayWithObjects:@"A",@"B",@"C",@"D",@"E",nil]; // Here we have set our own keys which will replace the existing keys .
NSMutableArray *myNewArray = [[[NSMutableArray alloc] init] autorelease]; //create a new mutable dictionary
for (id myArrayInstance in array) {
NSDictionary *myNewDict = [[NSDictionary alloc] initWithObjects:[myArrayInstance allObjects] forKeys:myDictFnalKeys]; // copy the object values from old dictionary and keys from the new array.
[myNewArray addObject:myNewDict];
}
Проблема заключается в том, что значения для словарей не идут в правильном порядке. [myArrayInstance allObjects] не возвращает правильный порядок, поэтому последний массив не в правильном порядке. Его приход как-
NSMutableArray *newArray
({
{
A = "01/27/13";
B = No;
C = Jhon;
D = 5000;
E = THAILAND;
},
{
A = "01/27/13";
B = No;
C = Peter;
D = 4000;
E = US;
}
})
Словари неупорядочены, что вы ожидали? – Abizern
Моя цель состояла в том, чтобы заменить старые ключи новыми ключами. Я последовал этому подходу, думая, что словарь вернет значения упорядоченным образом. Есть ли какой-либо подход для достижения требуемой функциональности. – triandicAnt
NSMutableArray * myNewArray = [NSMutableArray array]; // создаем новый изменяемый словарь (он автоматически выпущен) – geowar