0

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

array {

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

我还有一个NSMutableDictionary其键是上面的项目NSMutableArray,如下所示:

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 indexes. 现在我正在这样做:

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

有没有更好的方法来重新排序NSMutableDicitioanry以匹配 的顺序NSMutableArray

谢谢!

4

1 回答 1

3

NSDictionary不保证其键/值对的任何顺序。没有办法将您的键/值保持在一个固定的顺序中,这样工作没有意义NSDictionary。(您使用而不是索引来检索值)。

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

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

或者

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

然后,您可以根据需要检索已排序键的关联对象。

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

于 2012-09-07T19:07:00.073 回答