-1

比較したいので、CMTimeそれに基づいてループを実行しています。に変換ObjectiveCしてSwiftいますが、 に適した方法が見つかりませんCMTIME_COMPARE_INLINE

CMTime oneSecond = CMTimeMake( 1, 1 );
CMTime oneSecondAgo = CMTimeSubtract( timestamp, oneSecond );

while( CMTIME_COMPARE_INLINE( [_previousSecondTimestamps[0] CMTimeValue], <, oneSecondAgo ) ) {
    [_previousSecondTimestamps removeObjectAtIndex:0];
}

のどのバージョンでも、この同様の問題に直面した人はいSwiftますか?

4

1 に答える 1

3

CMTimeSwift 3 ではタイプとしてインポートされるComparableため、使用する必要はありませんCMTIME_COMPARE_INLINE

_previousSecondTimestampsがタイプ(*1) であると仮定すると[CMTime]、Swift 3 では次のように記述できます。

    let oneSecond = CMTime(seconds: 1.0, preferredTimescale: 1)
    let oneSecondAgo = timestamp - oneSecond

    while !_previousSecondTimestamps.isEmpty && _previousSecondTimestamps[0] < oneSecondAgo {
        _previousSecondTimestamps.remove(at: 0)
    }

*1 Swift では Array を直接宣言できるため、 containingCMTimeを使用する必要はありません。NSMutableArrayNSValue

于 2016-12-20T05:11:59.833 に答える