无法将用户制作的阵列保存到UserDefaults

时间:2017-05-28 17:58:46

标签: ios arrays swift uitableview

我正在创建我的第一个有待办事项列表的应用。列表项存储在一个数组中并显示在表视图中,但是当关闭应用程序时,项目不再存在。我尝试使用用户默认值来保存项目,但到目前为止还没有工作。我究竟做错了什么?我试图使用保存数据的按钮。

///button to save the data
 @IBAction func savelist(_ sender: Any) {

    let defaults = UserDefaults.standard
    defaults.set(list, forKey: "SavedArray")
    myTableView.reloadData()
}
//// retrieving the data
 override func viewDidLoad()
{
    super.viewDidLoad()
    let defaults = UserDefaults.standard
    let array = defaults.stringArray(forKey: "SavedArray") ?? [String]()
    myTableView.reloadData()

}

我也是这样做的,当我按下保存按钮时,阵列将被打印到控制台,以便我知道这些项目正被添加到数组中。问题是我无法保存这些物品。谢谢!

2 个答案:

答案 0 :(得分:0)

我解决了这个问题: 然而,在关闭我正在使用的应用程序

之后检索数据时,我的数组被称为列表

let array = defaults.stringArray(forKey: "SavedArray") ?? [String]()

所以我把它改成了:

 list = defaults.stringArray(forKey: "SavedArray") ?? [String]()

我还添加了之前答案提出的建议。我将默认值设置为全局变量,然后添加了

        defaults.synchronize()

按钮操作

答案 1 :(得分:-1)

您的问题似乎不是检索字符串数组,而是将元素添加到数组中。

如果您还没有[String],请考虑定义您的列表:

    var list = [String]()

如果要向阵列添加元素,请使用以下命令:

    list.append(txtField.text!)

我希望这能解决你的问题。祝你好运!