web-dev-qa-db-ja.com

SwiftのDoubleからの符号なしLong Long

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

私のSwift私が現時点で持っているコード:

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

let milliSecs: CUnsignedLongLong = elapsedTime * 1000

ただし、doubleCUnsignedLongLongに変換できないというエラーが表示されますが、これは理にかなっています。ただし、Objective-Cのようにキャストする方法はありますか?これを回避する方法はありますか?

12
GarethPrice

ただし、Objective Cのようにキャストする方法はありますか?これを回避する方法はありますか?

let milliSecs = CUnsignedLongLong(elapsedTime * 1000)

または

let milliSecs = UInt64(elapsedTime * 1000)
21
simons

CUnsignedLongLongは、標準ライブラリで次のように定義されています:

typealias CUnsignedLongLong = UInt64

したがって、DoubleCUnsignedLongLongに変換するには、次を使用してCUnsignedLongLongの新しいインスタンスを作成する必要があります。

CUnsignedLongLong(elapsedTime * 1000)

または

UInt64(elapsedTime * 1000)
4
David Skrundz

Swiftは暗黙的な型変換を許可しません。型のコンストラクターを使用して値を作成します。

let milliSecs = CFUnsignedLongLong(elapsedTime * 1000)
2
orahman