web-dev-qa-db-fra.com

Non signé Long Long from Double in Swift

J'ai utilisé les éléments suivants dans Objective-C:

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);

Dans mon Swift que j'ai en ce moment:

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

let milliSecs: CUnsignedLongLong = elapsedTime * 1000

Cependant, j'obtiens l'erreur qu'un double ne peut pas être converti en CUnsignedLongLong ce qui est logique. Existe-t-il un moyen de le lancer comme dans Objective-C? Y a-t-il un moyen de contourner ceci?

12
GarethPrice

Existe-t-il un moyen de le lancer comme dans l'objectif C? Y a-t-il un moyen de contourner ceci?

let milliSecs = CUnsignedLongLong(elapsedTime * 1000)

Ou

let milliSecs = UInt64(elapsedTime * 1000)
21
simons

CUnsignedLongLong est défini dans la bibliothèque standard par:

typealias CUnsignedLongLong = UInt64

Donc, pour convertir un Double en CUnsignedLongLong, vous devez créer une nouvelle instance de CUnsignedLongLong en utilisant

CUnsignedLongLong(elapsedTime * 1000)

ou

UInt64(elapsedTime * 1000)
4
David Skrundz

Swift ne permet pas la conversion de type implicite. Créez la valeur en utilisant le constructeur pour son type.

let milliSecs = CFUnsignedLongLong(elapsedTime * 1000)
2
orahman