2017-05-13 47 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