2016-06-28 40 views
0

在我的代碼中,我需要檢索保存的數據數組以填充學生歷史數據。我正在使用下面的代碼行 - 這很好。在初次運行時繞過代碼

returnedArray = UserDefaults.standard().object(forKey: "studentHistoryArray")! as! NSArray as! [[String]] 

我遇到的問題是程序的初始(第一次)運行。該數組尚未創建/保存,所以我需要跳過這一步,但只能在程序的初始運行中。有沒有辦法在程序的第一次運行時運行這一行代碼?

+0

檢查UserDefaults.standard()。object(forKey:「studentHistoryArray」)是否存在? – Larme

+0

我很困惑。首先你說你需要在程序的初始運行時跳過它。然後你問是否有辦法在程序的初始運行時才運行它。這是兩個相互矛盾的想法。 –

+0

我的不好。我的意思是詢問是否有辦法在初始運行時跳過這一行代碼。不管怎麼說,還是要謝謝你。下面推薦的解決方案做到了這一點。 – Westerndays

回答

1
var defaults = UserDefaults.standard() 
let studentHistoryArrayKey = "studentHistoryArray" 
var returnedArray = defaults.object(forKey: studentHistoryArrayKey) as? [[String]] 
// I don't think that you need to use the intermediary cast to NSArray, but 
// I could be wrong. 

if returnedArray == nil { 
    returnedArray = [[String]]() 
    defaults.setObject(returnedArray, forKey: studentHistoryArrayKey) 
} 

// Now it's guaranteed to be non-nil, so do whatever you need to do with the array. 

作爲一個經驗法則,如果你使用!的慷慨在你的榜樣,有什麼地方要打破。

+0

非常感謝您的幫助。你建議的代碼完美工作。作爲Swift的入門級程序員,我無法感謝你。 – Westerndays