2015-08-19 32 views
0

您好我正在創建一個有兩個控件:一個NSSlider和一個NSTextField,不斷更新。我向NSTextField添加了一個NSDateFormatter,以便它顯示格式化爲當前時間的滑塊的當前值。滑塊的範圍爲0到86,400單位(以便用戶在24小時範圍內滑動秒)。NSUserDefaults中的double值檢索日期(Swift)

我將我的應用程序連接到共享用戶默認值控制器,以便爲用戶存儲值。

該應用程序在NSTextField中顯示正確的時間,但它總是以秒爲單位存儲該值。例如,如果用戶移動滑塊時,選擇6時32分14秒,系統將實際存儲23534.2261709793在關鍵開始時間

當用戶再次打開應用時,他們將看到6時32分14秒的預期。

我的問題是,當我想讀我的代碼變量:

我可以讀取該值作爲雙:

let value = NSUserDefaults.standardUserDefaults().objectForKey("startTimeValue") as? Double 

這工作得很好,如果我嘗試投它的NSDate它將不起作用(該值將被設置爲零)。所以我認爲,在代碼中使用NSDateFormatter可以工作(因爲這是這樣的界面生成器做的工作,爲用戶看到日期):

let dateFormatter = NSDateFormatter() 
dateFormatter.dateStyle = NSDateFormatterStyle.NoStyle 
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle 
let date = dateFormatter.dateFromString((value?.description)!) 

在前面的代碼中,我創建的日期格式,然後設置日期風格爲無(我只想做的時間),以及時間風格的簡短。但是給出value.description(「23534.2261709793」)仍然不起作用。日期仍然是零。

有什麼我做錯了嗎?

回答

2

您從NSUserDefaults存儲/獲取的double是1970年1月1日星期四以來的時間間隔。因此您需要將該時間間隔輸入到NSDate構造函數中,以便它可以爲您構建日期。

let value = NSUserDefaults.standardUserDefaults().objectForKey("startTimeValue") as? Double 
let date = NSDate(timeIntervalSince1970: value) 
+0

謝謝,解決問題! – gbdavid

+0

沒問題,很高興我能幫忙 – Swinny89