2015-07-27 22 views
9

ich verwendet, um die folgenden in Objective-C zu verwenden:Unsigned Long Long Double in Swift

double currentTime = CFAbsoluteTimeGetCurrent(); 

// self.startTime is called before, like  
// self.startTime = CFAbsoluteTimeGetCurrent(); 

double elapsedTime = currentTime - self.startTime; 

// Convert the double to milliseconds 
unsigned long long milliSecs = (unsigned long long)(elapsedTime * 1000); 

In meinem schnellen Code, den ich im Moment haben:

let currentTime: Double = CFAbsoluteTimeGetCurrent() 
let elapsedTime: Double = currentTime - startTime 

let milliSecs: CUnsignedLongLong = elapsedTime * 1000 

Allerdings erhalte ich die Fehler dass ein double nicht in eine CUnsignedLongLong umgewandelt werden kann, die Sinn macht. Gibt es eine Möglichkeit wie in Objective-C zu wirken? Gibt es einen Weg dahin?

Antwort

15

Gibt es eine Möglichkeit, es wie in Objective C zu werfen? Gibt es einen Weg dahin?

let milliSecs = CUnsignedLongLong(elapsedTime * 1000) 

Oder

let milliSecs = UInt64(elapsedTime * 1000) 
2

CUnsignedLongLong in der Standardbibliothek definiert wird durch:

typealias CUnsignedLongLong = UInt64 

So ein Double-CUnsignedLongLong zu konvertieren, müssen Sie eine neue Instanz von CUnsignedLongLong erstellen mit

CUnsignedLongLong(elapsedTime * 1000) 

oder

UInt64(elapsedTime * 1000) 
2

Swift erlaubt keine implizite Typumwandlung. Erstellen Sie den Wert mithilfe des Konstruktors für seinen Typ.

let milliSecs = CFUnsignedLongLong(elapsedTime * 1000) 
Verwandte Themen