Swift - 从DispatchTime.now()返回的变量类型

时间:2017-05-13 22:38:51

标签: swift types grand-central-dispatch var

如果我需要保存DispatchTime.now()的值以在调用它的函数之外访问它,那么变量类型是什么?

编辑:变量类型是DispatchTime但我看不到将该值保存为变量的方法,因此我可以将它传递给prepare(for segue)中的另一个视图控制器或跨函数使用它。

var t = DispatchTime [类型名称后的预期成员名称或构造函数调用]

var t = DispatchTime() [参数'uptimeNanoseconds'在调用中缺少参数]

var t = DispatchTime.self(没有错误,但是稍后尝试t = DispatchTime.now()['无法指定'DispatchTime'类型的值来键入'DispatchTime.Type'])

2 个答案:

答案 0 :(得分:0)

您可以将'occupy'存储为变量。但是,如果您需要将其存储在应用程序内存之外的某个位置(某些缓存等),您应该查看DispatchTime的此属性:

DispatchTime

这是它的原始值,以纳秒为单位。从文档(https://developer.apple.com/reference/dispatch/dispatch_time_t)中,您可以看到它的类型为UInt64。为了让一切变得更好,您可以使用以下方法初始化public let rawValue: dispatch_time_t

DispatchTime

通过这种方式,您可以将DispatchTime(uptimeNanoseconds: <UInt64>) 的原始值存储在任意位置。

答案 1 :(得分:-1)

想出如何做到这一点,但不再在我的项目中使用DispatchTime。

可以像这样设置变量: var t = DispatchTime(uptimeNanoseconds: 0)

然后用当前时间填充变量:t = DispatchTime.now()

尝试使用时,此方法没有给我正确的秒数:

let nanoTime = endingTime.uptimeNanoseconds - startTime.uptimeNanoseconds
let timeInterval = Double(nanoTime) / 1_000_000_000

我转而使用CFAbsoluteTime()变量并在启动和停止时将其值设置为CFAbsoluteTimeGetCurrent()。

那样totalTime = endTime - startTime给了我正确的秒数

相关问题