4

私のプロジェクトでは、 からデータを取得しており、を解析しAPiてデータを に取得しています。以下に示すように、「」という形式の「 StartDate 」というキーがあります。NSMutableArrayJSONmm/dd/yyyy hh:mm:ss

StartDate: "5/18/2013 12:00:00 AM"

これらのデータを に保存してresultArrayいます。オブジェクトにはさらに 4 つのキーがあり、私JSONのフォームは

{
    EventId: "xxxx",
    Title: "xxx",
    Location: "xxxx",
    StartDate: "5/18/2013 12:00:00 AM",
    Link: null
}

ここにはそのようなオブジェクトが複数あります。私がする必要があるのは、resultArray日付に基づいて(昇順または降順で)内容をソートすることだけです。次のコードを使用します

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"StartDate" ascending:TRUE];
[resultArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

しかし、私はシャッフルされた結果を得ています.ソートは全体を通して正しくありません.誰かが私が間違っていた場所を教えてもらえますか.

ありがとう

4

2 に答える 2

6

動作するはずです

[resultArray sortUsingComparator:^NSComparisonResult(id a, id b) {

    static NSDateFormatter *dateFormatter = nil;

    if (!dateFormatter) {
        dateFormatter = [[NSDateFormatter alloc] init];
        dateFormatter.dateFormat = @"mm/dd/yyyy hh:mm:ss"; 
    }

    NSString *date1String = [a valueForKey:@"StartDate"];
    NSString *date2String = [b valueForKey:@"StartDate"];

    NSDate *date1 = [dateFormatter dateFromString:date1String];
    NSDate *date2 = [dateFormatter dateFromString:date2String];

    return [date1 compare:date2];
}];
于 2013-01-14T13:20:56.553 に答える
3

StartDateは文字列形式のようで、文字列用にシャッフルしていると思います。最初にNSDateに変換してから、この記述子を適用する必要があります...これがお役に立てば幸いです。

于 2013-01-14T12:01:00.293 に答える