2016-12-16 154 views
1

我试图将数组保存到UserDefaults,但运行应用程序后显示此Error。当应用程序崩溃时,Xcode显示数组的正确值,所以数据很好地保存到数组中。 我字符串数据保存到数组中的第一个VC:Swift 3用UserDefaults保存数组

Last20Times.insert(dsa, at: 0) // Last20Times is the array. 
if Last20Times.count > 0 { 
    let defaults = UserDefaults.standard 
    defaults.set(Last20Times, forKey: "last20") 

第二个控制器的TableView:

if indexPath.section == 1 { 
    let ArrayLast20 = UserDefaults.standard.stringArray(forKey: "last20") 
    cell.textLabel?.text = ArrayLast20?[indexPath.row]// error(picture) 
} 

return cell 

谢谢

+0

错误发生在哪一行上?控制台中显示的是什么? – Sweeper

+2

你不会认真地从'cellForRow'中的用户默认值中获取数据,不是吗?用户默认值不应该用于保存临时数据。通过segue或协议/代理或块传递数据。 – vadian

+1

@vadian这是一个游戏的一部分,我将他的最后20个结果保存到Tableviewcontroller –

回答

-1

您需要将UserDefaults保存为这样:

​​

。 。 。

+1

您实际上没有。 – vadian

+0

@vadian可以详细说明吗?如何在不同步的情况下保存userdefaults? – Fluidity

+2

从文档:*因为此方法是定期自动调用的,所以只有当您不能等待自动同步(例如,如果您的应用程序即将退出)或者您想要将用户默认更新为即使未进行任何更改,磁盘上的内容也是如此。* – vadian