1

現在、私のアプリには、NSUserDefaults からロードする NSArray があります。NSArray の各オブジェクトは、約 5 つの異なるキーを持つ NSDictionary です。内部の NSDates に基づいて、NSDictionary自体を並べ替えます。NSDates だけをソートしたくありません。

私はこのコードでこれをやろうとしました:

NSComparator sortByDate = ^(id dict1, id dict2) {
        NSDate* n1 = [dict1 objectForKey:@"Date"];
        NSDate* n2 = [dict2 objectForKey:@"Date"];
        return (NSComparisonResult)[n1 compare:n2];
    };
    [self.cellArray sortUsingComparator:sortByDate];

コードが実行されても何も起こりませんが。内部の何かに基づいて NSDictionarys を並べ替える方法については混乱しています。

誰でもこれについて洞察を提供できますか?

ありがとう!

4

1 に答える 1

1

インラインで並べ替えることもできますが、それが大きな影響を与えるとは思えません。しかし、ブロックを抽象化することは決してないと言えます。有効なNSDatesを取得していることを確認するために、NSLoggingも試してみます。

    [cells sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSDate *n1 = [obj1 objectForKey:@"Date"];
        NSDate *n2 = [obj2 objectForKey:@"Date"];

        if (n1 > n2) {
            return NSOrderedAscending;
        } else (n1 < n2) {
            return NSOrderedDescending;
        } else {
            return NSOrderedSame;
        }

    }];
于 2012-05-19T20:00:14.480 に答える