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;aNSDictionary
不保证其键/值对的任何顺序。无法将键/值保持在设置的顺序,并且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描述的第一个。