Arrays Swift 3使用用户默认值保存数组
我正在尝试将数组保存为UserDefaults,但运行应用程序后会显示这一点。当应用程序崩溃时,Xcode会显示正确的数组值,因此数据会很好地保存到数组中。 我在第一个VC中将字符串数据保存到数组:Arrays Swift 3使用用户默认值保存数组,arrays,swift,nsuserdefaults,Arrays,Swift,Nsuserdefaults,我正在尝试将数组保存为UserDefaults,但运行应用程序后会显示这一点。当应用程序崩溃时,Xcode会显示正确的数组值,因此数据会很好地保存到数组中。 我在第一个VC中将字符串数据保存到数组: Last20Times.insert(dsa, at: 0) // Last20Times is the array. if Last20Times.count > 0 { let defaults = UserDefaults.standard defaults.set(La
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
谢谢您需要将您的用户默认值保存为:
defaults.synchronize()
错误发生在哪一行?控制台中显示了什么?您并没有认真地从
cellForRow
中的用户默认值中获取数据,不是吗?用户默认值不应用于保存临时数据。通过segue或protocol/delegate或block传递数据。@vadian这是游戏的一部分,我将他最后的20个结果保存到Tableviewcontroller@Sweeper控制台显示了包含正确元素的数组,我在问题中标记了错误行,实际上你没有。@vadian你能详细说明一下吗?如何在不同步的情况下保存userdefaults?从文档中可以看出:由于此方法是定期自动调用的,因此仅当您无法等待自动同步时(例如,如果您的应用程序即将退出),才使用此方法或者,即使未进行任何更改,也要将用户默认值更新为磁盘上的值。“-synchronize已弃用,并将在将来的版本中标记为NS_弃用宏。”-文档