2017-05-13 38 views
-2

如果我需要保存DispatchTime.now的值()来访问它在它被调用的函数之外,什么是变量的类型?斯威夫特 - 变量类型从DispatchTime.now()返回

编辑:变量类型是DispatchTime但我看到没有办法保存值作为变量,所以我可以沿着在制备(对于赛格瑞)或跨函数使用它的另一个视图控制器将它传递。

var t = DispatchTime [预期成员名称或构造呼叫类型名称后面]

var t = DispatchTime() [在呼叫缺少参数 'uptimeNanoseconds' 参数]

var t = DispatchTime.self(没有错误,但是当后来试图吨= DispatchTime.now ()['不能指定'DispatchTime'类型的值来键入'DispatchTime.Type'])

+0

DipatchTime将是变量类型。 –

+0

选项单击某个变量,在Xcode中看到它的推断时间。命令点击一个类型/方法/函数/属性来查看它的声明。 – Alexander

回答

0

您可以将DispatchTime作为变量存储。不过,如果你需要在一些地方保存它的应用程序的内存(缓存部分等)之外,你应该在DispatchTime这个属性来看一看:

public let rawValue: dispatch_time_t 

这是它在纳秒原始值。从技术文档(https://developer.apple.com/reference/dispatch/dispatch_time_t),你可以看到它的类型UINT64的。而为了让一切更好,你可以用这个方法来初始化DispatchTime

DispatchTime(uptimeNanoseconds: <UInt64>) 

这样,你可以存储你的DispatchTime任何你想要的原始值。

-2

想出如何做到这一点,但不再在我的项目中使用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给了我正确的秒数

+0

嘿,我试图删除这个问题,但它警告我不要...什么时候你已经写了一个糟糕的问题是最好的行动过程?我想我会留下一个答案来解释我的想法,但这也被证明不受欢迎。如果可以的话,我会删除这个问题,因为我没有看到未来读者的价值。 – RanLearns