Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Swift 3使用用户默认值保存数组_Arrays_Swift_Nsuserdefaults - Fatal编程技术网

Arrays Swift 3使用用户默认值保存数组

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

我正在尝试将数组保存为UserDefaults,但运行应用程序后会显示这一点。当应用程序崩溃时,Xcode会显示正确的数组值,因此数据会很好地保存到数组中。 我在第一个VC中将字符串数据保存到数组:

 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_弃用宏。”-文档