0

値を持つ辞書(self.dictMyDownloads)があります:

    {
  1: {
    id: "1",
    name: "Venue Details",
    url: "http://www.sapusers.org/event_files/3338_VENUE DETAILS KB.pdf",
    file_size: "97011"
  },
  2: {
    id: "2",
    name: "another filename",
    url: "test url 2",
    file_size: "4321"
  },
  3: {
    id: "3",
    name: "Map/Directions",
    url: "http://www.sapusers.org/event_files/3337_SAP UK Location Map HB.pdf",
    file_size: "429320"
  }
}

このコードを実行して、メイン辞書の辞書を nsmutablearray (self.mutArrMyDownloadsDetails) に挿入しています。

for(NSDictionary *dict in [self.dictMyDownloads allKeys]){
    [self.mutArrMyDownloadsDetails addObject:[self.dictMyDownloads objectForKey:dict]];
}

しかし、結果を表示すると、配列に追加される辞書の順序が変更されています。

これは結果ログです。

    (
        {
        "file_size" = 97011;
        id = 1;
        name = "Venue Details";
        url = "http://www.sapusers.org/event_files/3338_VENUE DETAILS KB.pdf";
    },
        {
        "file_size" = 429320;
        id = 3;
        name = "Map/Directions";
        url = "http://www.sapusers.org/event_files/3337_SAP UK Location Map HB.pdf";
    },
        {
        "file_size" = 4321;
        id = 2;
        name = "another filename";
        url = "test url 2";
    }
)

どこで何が間違っているのか理解できません。助けてください。

ありがとう。

4

2 に答える 2

0

もう 1 つの方法は、for ループが終了したときに並べ替えて、NSMutableArray から NSArray を作成することです。

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

NSArray *sortedArray = [NSArray arrayWithArray:[self.mutArrMyDownloadsDetails sortedArrayUsingDescriptors:sortDescriptors]];
于 2013-09-20T07:59:28.800 に答える