0

私はNSStrings期間を含むいくつかを持っています、それらはそのように見えます:@"03:40", @"08:40"-時間はアクションの期間です。int文字列ごとに分を入れたいのですが、後で「01:20」は「80」(分)と言って、後で比較します。

Objective-Cでこの単純なことをどのように管理しますか?前もって感謝します

編集:

これを試してみましたが、役に立ちませんでした。まったく違うアプローチ、簡単で軽いものが欲しいです。

- (NSMutableArray *)sortResultsByTime
{
    NSMutableArray *sortedTrips = [NSMutableArray arrayWithArray:[_tweets sortedArrayUsingComparator: ^(id trip1, id trip2) {

        double time1 = [self durationFromString:[(Tweet *) trip1 flightDuration]];
        double time2 = [self durationFromString:[(Tweet *) trip1 flightDuration]];
        NSLog(@"What's time1? It's %f", time1);
        NSLog(@"What's time2? It's %f", time2);

        if (time1 < time2) {
            return (NSComparisonResult)NSOrderedDescending;
        }

        if (time1 > time2) {
            return (NSComparisonResult)NSOrderedAscending;
        }

        return (NSComparisonResult)NSOrderedSame;
    }]];

    return sortedTrips;
}

- (double)durationFromString:(NSString *)durationString
{
    NSArray *durationArray = [durationString componentsSeparatedByString:@":"];

    return [durationArray[0] doubleValue] + [durationArray[1] doubleValue] / 60.0;
}
4

3 に答える 3

1

他の答えが複雑すぎると考える理由はわかりませんが、配列を使用しないソリューションが必要な場合は、次のようになります。

- (double)durationFromString:(NSString *)s
{
    int hr = 0, min = 0;
    NSScanner *scn = [NSScanner scannerWithString:s];
    [scn scanInt:&hr];
    [scn scanString:@":" intoString:NULL];
    [scn scanInt:&min];
    return hr * 60 + min;
}
于 2012-11-28T21:28:33.467 に答える
1

投稿したコードは、文字列を分数ではなく時間数に変換しようとしています。

あなたが欲しい:

return [durationArray[0] doubleValue] * 60 + [durationArray[1] doubleValue];

編集:次の行のため、元のコードは失敗しています:

double time2 = [self durationFromString:[(Tweet *) trip1 flightDuration]];

する必要があります:

double time2 = [self durationFromString:[(Tweet *) trip2 flightDuration]];

更新:OPは別のアプローチを望んでいるので、単純にこれを実行しないのはなぜですか。

NSString *time1 = [(Tweet *) trip1 flightDuration];
NSString *time2 = [(Tweet *) trip2 flightDuration];

return [time1 compare:time2];
于 2012-11-28T21:19:15.690 に答える
1

(を使用して)分割し、:(を使用して-[NSString componentsSeparatedByString:])各要素にアクセスし-[NSArray objectAtIndex:、次に整数(-[NSString intValue])に変換し、最後に乗算して加算します。

于 2012-11-28T21:20:38.403 に答える