Iphone 如何将NSMutableDictionary重新排序为NSMutableArray?

Iphone 如何将NSMutableDictionary重新排序为NSMutableArray?,iphone,objective-c,cocoa-touch,nsmutablearray,nsmutabledictionary,Iphone,Objective C,Cocoa Touch,Nsmutablearray,Nsmutabledictionary,我有一个NSMutableArray包含NSURLConnection描述,如下所示: array { "<NSURLConnection: 0x60eb40>", "<NSURLConnection: 0x6030e0>", "<NSURLConnection: 0x602ce0>", "<NSURLConnection: 0x60c330>", "<NSURLConnection: 0x662f5

我有一个
NSMutableArray
包含
NSURLConnection
描述,如下所示:

array {

    "<NSURLConnection: 0x60eb40>",
    "<NSURLConnection: 0x6030e0>",
    "<NSURLConnection: 0x602ce0>",
    "<NSURLConnection: 0x60c330>",
    "<NSURLConnection: 0x662f5a0>",
}
dictionary {

"<NSURLConnection: 0x602ce0>"  = "Last update: Sep 3, 2012";
"<NSURLConnection: 0x6030e0>"  = "Last update: Sep 7, 2012";
"<NSURLConnection: 0x60c330>"  = "Last update: Sep 4, 2012";
"<NSURLConnection: 0x60eb40>"  = "Last update: Sep 6, 2012";
"<NSURLConnection: 0x662f5a0>" = "Last update: Sep 5, 2012";
}

我需要对
NSMutableDictionary
重新排序,以匹配
NSMutableArray
索引的相同顺序
现在我正在这样做:

int a;
for (a=0; a<self.array.count; a++) {

    NSString *key    = [self.array objectAtIndex:a];
    NSString *object = [self.dictionary objectForKey:key];

    if (object !=nil) {
        [self.array removeObjectAtIndex:a];
        [self.array insertObject:object atIndex:a];
    }
}
inta;

for(a=0;a
NSDictionary
不保证其键/值对的任何顺序。无法将键/值保持在设置的顺序,并且
NSDictionary
这样工作没有意义。(使用键而不是索引来检索值)

如果希望值或键按特定顺序显示,可以在检索后对其进行排序:

NSArray * sortedKeys = [ [ myDictionary allKeys ] sortedArrayUsingSelector:... ] ;

然后,如果需要,可以检索排序键的关联对象


另一种选择是维护两个单独的数组,一个用于键,一个用于值,并保持它们的顺序。

NSDictionary
不保证其键/值对的任何顺序。无法将键/值保持在设置的顺序,而且
NSDictionary
这样工作没有意义。(使用键而不是索引来检索值)

如果希望值或键按特定顺序显示,可以在检索后对其进行排序:

NSArray * sortedKeys = [ [ myDictionary allKeys ] sortedArrayUsingSelector:... ] ;

然后,如果需要,可以检索排序键的关联对象


另一个选择是维护两个单独的数组,一个用于键,一个用于值,并保持它们的顺序。

字典没有排序。您更大的目标是什么?另外,
NSURLConnection
不符合
NSCopying
。您如何使用它们作为键?我写了一个答案,但正确的答案是“您正在尝试做什么?”,正如@W'rkncacnter所说,我需要跟踪多个异步NSURLConnections。最终的目标是在UITableView上显示一个有序的日期数组。问题是,由于异步连接的性质,日期不会以正确的顺序显示。因此,我在数组中跟踪连接,并且或包含字典上日期的响应。那么最终的字典将永远不会匹配数组的顺序。这就是为什么我需要一个新的有序数组,其索引将匹配第一个包含NSURLConnection描述的数组。我只是使用键来保持与NSURLConnection发生时相同的顺序。字典不是顺序d、 你更大的目标是什么?另外,
NSURLConnection
不符合
NSCopying
。你是如何使用它们作为键的?我写了一个答案,但正确的答案是“你想做什么?”,正如@W'rkncacnter所说,我需要跟踪多个异步NSURLConnections。最终的目标是在UITableView上显示一个有序的日期数组。问题是,由于异步连接的性质,日期不会以正确的顺序显示。因此,我在数组中跟踪连接,并且或包含字典上日期的响应。那么最终的字典将永远不会匹配数组的顺序。这就是为什么我需要一个新的有序数组,其索引将匹配第一个包含NSURLConnection描述的数组。我只是使用键来保持与NSURLConnection发生时相同的顺序。我有多个异步我们需要跟踪NSURLConnections。最终目标是在UITableView上显示一个有序的日期数组。问题是,由于异步连接的性质,日期不会以正确的顺序显示。因此,我在数组中跟踪连接,并将包含日期的响应存储在DICT上这就是为什么我需要一个新的有序数组,它的索引将匹配第一个包含NSURLConnection描述的数组。我需要跟踪多个异步NSURLConnection。最终目标是在UITableV上显示一个有序的NSArray日期问题是,由于异步连接的性质,日期不会显示在正确的顺序中。因此,我在数组中跟踪连接,并将包含日期的响应存储在字典中。然后,最终的字典将永远不会匹配数组的顺序。这就是为什么我需要一个新的有序数组,其索引将atch包含NSURLConnection描述的第一个。