在我的代码中,我需要检索已保存的数据数组以填充学生历史数据。我使用以下代码行 - 这很好用。
returnedArray = UserDefaults.standard().object(forKey: "studentHistoryArray")! as! NSArray as! [[String]]
我遇到的问题是程序的初始(第一次)运行。尚未创建/保存数组,因此我需要跳过此步骤,但仅限于程序的初始运行。有没有办法只在第一次运行程序时运行这行代码?
答案 0 :(得分: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.
根据经验,如果你像在你的例子中那样自由地使用!
,那么某些事情就会破裂。