我有一个字典(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";
}
)
我无法理解我在做错的地方或地点。请帮忙。
感谢。
答案 0 :(得分:0)
对象不是按顺序存储在NSMutableDictnory中,因此您不能依赖它们在NSLog中显示的顺序。是否真的有必要在那里使用数组?如果可能的话,我建议只使用字典。
答案 1 :(得分:0)
另一种方法是从你的NSMutableArray创建一个NSArray,在你的for循环结束时对它进行排序:
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"id" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [NSArray arrayWithArray:[self.mutArrMyDownloadsDetails sortedArrayUsingDescriptors:sortDescriptors]];