0

IOSのプロパティリストからキーを並べ替えるのに問題があります。

リストを辞書にロードし、そこから配列へのキーを抽出して、メトードでそれらをソートします: "sortedArrayUsingSelector'selector(compare :)"

キーを使おうとすると、キーの付加に沿って値がソートされていないように見えますか?例:(キー値)未ソート:Assens 0、Odense 1、Nyborg 1、Middelfart0。ソート済み:Assens、1、Odense 1、Nyborg 0、Middelfart0。

`

NSBundle *bundle = [NSBundle mainBundle];
    NSURL *KSplistURL = [bundle URLForResource:@"KommunerStedtillæg" 
                               withExtension:@"plist"];
    NSDictionary *dictionary = [NSDictionary 
                                dictionaryWithContentsOfURL:KSplistURL];
    self.kommuner = dictionary;

    //NSArray *keys = [[self.kommuner allKeys] sortedArrayUsingSelector:@selector(compare)];

    NSArray *components = [self.kommuner allKeys];
    NSArray *keys = [components sortedArrayUsingSelector:@selector(compare:)];


    NSMutableDictionary *newDict = [NSMutableDictionary dictionary];
    for (id key in keys)[newDict setObject:[dictionary objectForKey:key]forKey:key];




    self.kommunerKeys = [newDict allKeys];
    self.kommunerValues = [newDict allValues];

`

4

1 に答える 1

2

キー配列の無関係なコピーをソートしているという事実を辞書が認識するのはなぜだと思いますか? 次のような別の辞書を作成する必要があります。

NSArray *keys = [[originalDict allKeys] sortedArrayUsingSelector:@selector(compare:)];
NSMutableDictionary *newDict = [NSMutableDictionary dictionary];
for (id key in keys)
    [newDict setObject:[originalDict objectForKey:key] forKey:key];

newDictソートされたキー値が含まれるようになりました。

于 2012-07-02T06:39:15.193 に答える