2017-02-10 58 views
0

我有我要麼設置爲無,或日期的NSUserdefault,我想找回它,相信下面的代碼應該工作,但是我得到以下打印時試圖在控制檯中出現錯誤,並嘗試運行代碼以表明其處於某種NSCFData格式?我還沒有把它設置在任何地方,所以想知道從哪個數據類型拉出來的應用程序?無法投類型的值「__NSCFData」到「NSDate的」

let timerStoppingDate = UserDefaults.standard.object(forKey: "setStopDate") as! Date 

的SETSTOPDATE USERDEFAULT設置爲可選(< 62706c69 73743030 d4010203 04050608 09582476 65727369 6f6e5824 6f626a65 63747359 24617263 68697665 72542474 6f701200 0186a0a1 0755246e 756c6c5f 100f4e53 4b657965 64417263 68697665 72d10a0b 54726f6f 74800008 111a232d 3237393f 51545900 00000000 00010100 00000000 00000c00 00000000 00000000 00000000 00005b>) 無法投型的值 '__NSCFData'(0x109b0f680)到 '的NSDate'(0x109b10080)。

和其設置的位置:

func createTimer(stopDate: Date) { 
    print("CONSTRUCTING A TIMER") 
    userDefaults.set(stopDate, forKey: "setStopDate") 

我相信在其遇事應該設爲零的地步,所以無一NSCFData類型?

+0

我無法複製此內容。你有一個小的,完整的例子(說在命令行應用程序),演示? http://stackoverflow.com/help/mcve –

+0

林不知道我必須做這樣的技術能力,它真的很簡單,這就是爲什麼我看不到的問題,我設置了userdefault當他們運行一個計時器,如果他們不運行它,它應該讀爲零,我不知道爲什麼它通過這個數據類型在所有 – jwarris91

+1

我希望,在某些時候別的東西被設置爲'setStopDate'填充。人們將「日期」錯誤地輸入爲「數據」並不罕見。我會在每次更改用戶默認值時放置斷點,在調試器中將其讀回來,並查看實際寫入的內容。 –

回答

0

它不是一個理想的答案,但我改變了鍵名,所以我有一個新的UserDefault,它解決了問題,也許是舊密鑰被損壞,沒有別的改變,新的鍵名,使一切工作正常

+0

或者你可以有刪除模擬器/設備的應用程序,並再次運行它。這將清除用戶默認值。 – rmaddy

相關問題