1
NSTimeInterval
(またはDouble
)からDispatchTimeInterval
を差し引く必要があります。DispatchTimeIntervalをNSTimeInterval(またはDouble)に変換するにはどうすればよいですか?
DispatchTimeInterval
をNSTimeInterval
に変換する標準的な方法はありますか?
NSTimeInterval
(またはDouble
)からDispatchTimeInterval
を差し引く必要があります。DispatchTimeIntervalをNSTimeInterval(またはDouble)に変換するにはどうすればよいですか?
DispatchTimeInterval
をNSTimeInterval
に変換する標準的な方法はありますか?
DispatchTimeInterval
は列挙型です:
public enum DispatchTimeInterval : Equatable {
case seconds(Int)
case milliseconds(Int)
case microseconds(Int)
case nanoseconds(Int)
case never
}
あなたが使用してDispatchTimeInterval
を初期化することができます。
let tenSeconds: DispatchTimeInterval = .seconds(10)
let tenNanoseconds: DispatchTimeInterval = .nanoseconds(10)
をあなたが列挙
if case .seconds(let value) = tenSeconds {
print("DispatchTimeInterval is seconds \(value)")
} else if case .nanoseconds(let value) = tenNanoseconds {
print("DispatchTimeInterval is seconds \(value)")
}
場合の値で値を一致させる必要が列挙型から値を取得するには
変換機能は次のように表示されることがあります:
func toDouble(_ interval: DispatchTimeInterval) -> Double? {
var result: Double? = 0
switch interval {
case .seconds(let value):
result = Double(value)
case .milliseconds(let value):
result = Double(value)*0.001
case .microseconds(let value):
result = Double(value)*0.000001
case .nanoseconds(let value):
result = Double(value)*0.000000001
case .never:
result = nil
}
return result
}
More about Enumeration see in Apple Documentation
UPDATE:
DispatchTimeInterval
extension DispatchTimeInterval {
func toDouble() -> Double? {
var result: Double? = 0
switch self {
case .seconds(let value):
result = Double(value)
case .milliseconds(let value):
result = Double(value)*0.001
case .microseconds(let value):
result = Double(value)*0.000001
case .nanoseconds(let value):
result = Double(value)*0.000000001
case .never:
result = nil
}
return result
}
}
に拡張を作成DispatchTimeIntervalはDispatchTimeと、ない(NS)日または(NS)の時間間隔で使用されています。あなたはなぜこれが必要なのかをもっと教えてくれますか? - いずれの場合でも、DispatchTimeIntervalは列挙型であり、Doubleに変換するのは簡単なスイッチ/ケースの問題です。 –
@MartinR 'DispatchTimeInterval'で設定されたタイマーがあり、' NSTimeInterval'で実経過時間を計測しています。私は遅れを取るために両方を引く必要があります。 –