【问题标题】:Swift 3 Saving array with UserDefaultsSwift 3 使用 UserDefaults 保存数组
【发布时间】:2016-12-16 20:58:38
【问题描述】:

我正在尝试将数组保存到 UserDefaults,但在运行应用程序后会显示此 Error。当应用程序崩溃时,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

谢谢

【问题讨论】:

  • 错误发生在哪一行?控制台中显示了什么?
  • 您不会认真地从cellForRow 中的用户默认值中获取数据,不是吗?用户默认值不应该用于保存临时数据。通过 segue 或协议/委托或块传递数据。
  • @vadian 这是游戏的一部分,我将他最近的 20 个结果保存到 Tableviewcontroller 中
  • @Sweeper 控制台显示包含正确元素的数组,我在我的问题中标记了错误行

标签: arrays swift nsuserdefaults


【解决方案1】:

您需要这样保存您的 UserDefaults:

defaults.synchronize() 

。 . .

【讨论】:

  • 你实际上没有。
  • @vadian 你能详细说明一下吗?如何在不同步的情况下保存用户默认值?
  • 来自文档:因为这个方法是定期自动调用的,所以只有当你不能等待自动同步时才使用这个方法(例如,如果你的应用程序即将退出)或如果您想更新用户默认为磁盘上的内容,即使您没有进行任何更改。
  • " -synchronize 已弃用,将在未来版本中使用 NS_DEPRECATED 宏进行标记。" - 文档
猜你喜欢
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多