0

3 つのオブジェクトを含む NSArray があります。各オブジェクトは 5 つの値で構成されます。オブジェクトで日付順に並べ替えるにはどうすればよいですか?

result: (
    gg,
    "2012-10-28 01:34:00 +0000",
    "Church Bells",
    "pin_red",
    1
)(
    iu,
    "2008-09-22 17:32:00 +0000",
    "Birthday Song",
    "pin_red",
    1
)(
    "my birthday woo hoo",
    "2012-09-04 19:27:00 +0000",
    "Birthday Song",
    "pin_blue",
    1
)

私が探している結果 - ソートされた配列は次のようになります。

(
    iu,
    "2008-09-22 17:32:00 +0000",
    "Birthday Song",
    "pin_red",
    1
)
(
    "my birthday woo hoo",
    "2012-09-04 19:27:00 +0000",
    "Birthday Song",
    "pin_blue",
    1
)
(
    gg,
    "2012-10-28 01:34:00 +0000",
    "Church Bells",
    "pin_red",
    1
)

nsdictionary オブジェクトからこの配列を取得しています。

dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:stringsPlistPath];
stringsMutableArray = [[NSMutableArray alloc] initWithObjects:nil];

        for (id key in dictionary) 
        {
            [stringsMutableArray addObject:[dictionary objectForKey:key]];
        }
4

2 に答える 2

2

これを試して:

NSArray *sortedArray = [result sortedArrayUsingComparator: ^(id obj1, id obj2) {
    NSArray *arr1 = (NSArray *)obj1;
    NSArray *arr2 = (NSArray *)obj2;
    NSDate *date1 = arr1[1];
    NSDate *date2 = arr2[1];

    return [date1 compare:date2];
}];

このコードは、実際には配列の配列があり、日付は常に内部配列のインデックス 1 にある NSDate オブジェクトであると想定しています。これが希望する逆の順序でソートされる場合は、日付比較のために 2 つの日付を入れ替えます。

于 2012-10-28T04:56:26.813 に答える
0

あなたの問題を解決する同様の質問があります:日付文字列またはオブジェクトの NSArray を並べ替えます

上記のリンクからの回答を以下に貼り付けます。

日付を NSDate オブジェクトとして NS(Mutable)Array に格納し、[ -[NSArray sortedArrayUsingSelector:][1] または [ -[NSMutableArray sortUsingSelector:]][1] を使用してパラメーターとして渡し@selector(compare:)ます。[ -[NSDate compare:]][2] メソッドは、日付を昇順に並べ替えます。これは、NSSortDescriptor を作成するよりも簡単で、独自の比較関数を作成するよりもはるかに簡単です。(NSDate オブジェクトは、少なくともカスタム コードで達成したいと考えているのと同じくらい効率的に、お互いを比較する方法を知っています。)

[1]: http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableArray/sortUsingSelector : [2]: http: //developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/compare :

于 2012-10-28T04:34:18.563 に答える