2016-12-20 2 views
-1

Vous voulez comparer CMTime et basé sur ce que je suis en boucle. Conversion ObjectiveC à Swift, je ne peux pas trouvé la méthode appropriée pour CMTIME_COMPARE_INLINE.CMTIME_COMPARE_INLINE dans Swift 3?

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

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

Quelqu'un at-il face à cette question similaire dans une version de Swift?

Répondre

3

CMTime est importé en tant que type Comparable dans Swift 3, vous n'avez donc pas besoin d'utiliser CMTIME_COMPARE_INLINE.

En supposant _previousSecondTimestamps est de type [CMTime] (* 1), vous pouvez écrire quelque chose comme ça à 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 Dans Swift, vous pouvez déclarer un tableau de CMTime directement, vous n'avez pas besoin pour utiliser NSMutableArray contenant NSValue.

+0

Merci! Bien que j'ai trouvé une autre solution aussi! –