16

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

私の迅速なコードでは、現時点では次のとおりです。

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

let milliSecs: CUnsignedLongLong = elapsedTime * 1000

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

4

3 に答える 3

27

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

let milliSecs = CUnsignedLongLong(elapsedTime * 1000)

または

let milliSecs = UInt64(elapsedTime * 1000)
于 2015-07-27T17:33:37.403 に答える
5

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

typealias CUnsignedLongLong = UInt64

したがって、 a を に変換するDoubleには、 usingCUnsignedLongLongの新しいインスタンスを作成する必要がありますCUnsignedLongLong

CUnsignedLongLong(elapsedTime * 1000)

また

UInt64(elapsedTime * 1000)
于 2015-07-27T17:36:38.757 に答える
2

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

let milliSecs = CFUnsignedLongLong(elapsedTime * 1000)
于 2015-07-27T17:41:09.600 に答える