2016-06-28 72 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