Click here to see the screenshot of the code.
我正在制作一个列表应用程序,并且正在将数组保存为我想要在再次打开应用程序时加载的“列表”。 奇怪的是我在模拟器上工作,但不在设备上。 (看截图就明白了)
feedCells = (NSUserDefaults.standardUserDefaults().objectForKey("feedCellsData") as? [String])!
这就是它不断崩溃的线路。
我尝试更改它,使其成为可选值。但我找不到任何似乎有帮助的东西..
最佳答案
首先检查您的设备 iOS 版本是否为 iOS 8 或更高版本。如果小于该值,则在将值设置为 NSUserDefaults 后也使用 Synchronize()。
您正在强制展开(使用!)从向下转换(使用 as?)获得的可选值。
您还可以通过添加检查从 NSUserDefaults 获取的值是否为 nil 来解决此崩溃,然后将其分配给您的 feedCells 变量。
let cells = NSUserDefaults.standardUserDefaults().objectForKey("feedCellsData") as? [String]
if cells != nil {
feedCells = cells
}
或
将 feedCells var 设为可选并删除“!”从出现错误的行末尾开始。
var feedCell : [String]?
feedCells = NSUserDefaults.standardUserDefaults().objectForKey("feedCellsData") as? [String]
关于xcode - (lldb) 在设备上运行但不在模拟器上运行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37700184/