0

次のような辞書の配列で構成される可変配列があります。

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;
    }
 })

キーを変更するために、配列内の各要素を反復し、各ディクショナリごとに反復し、各キーを反復する必要があるネストされた for ループは必要ありません。私がしたことは次のとおりです。

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;
    }

}))

4

2 に答える 2