2016-12-20 6 views
-1

Хотите сравнить CMTime и на основе этого я выполняю цикл. Преобразование ObjectiveC в Swift, я не могу найти подходящий метод для CMTIME_COMPARE_INLINE.CMTIME_COMPARE_INLINE в Swift 3?

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

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

Кто-сталкивается с этим подобным вопросом в любой версии Swift?

ответ

3

CMTime импортирован как тип Comparable в Swift 3, поэтому вам не нужно использовать CMTIME_COMPARE_INLINE.

Предполагая _previousSecondTimestamps имеет тип [CMTime] (* 1), вы можете написать что-то подобное в 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, вы можете объявить массив CMTime непосредственно, у вас нет необходимости для использования NSMutableArray, содержащего NSValue.

+0

Спасибо! Хотя я нашел и другое решение! –