使用Swift 3中的表格单元格的值设置UserDefaults

时间:2018-03-20 05:34:18

标签: ios swift uitableview nsuserdefaults

我是Swift的新手,我正在创建一个音频应用程序。用户将看到UITableView并且可以单击要播放的文件 - 我想在本地记录该文件在返回应用程序时已播放过。

根据文档,我使用UserDefaults作为我的方法来捕获它,因为它只对该用户有用。具体来说,我试图将他们选择的UITableView单元格的文本传递给UserDefaults的已保存数组。

在我的表格中,我在此处传递了这些数据:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if let indexPath = self.tableView.indexPathForSelectedRow {

        // test to see if i can store row name in the defaults array
         let defaults = UserDefaults.standard
         let datastring = TableData[indexPath.row] as? String
         defaults.set(datastring, forKey: "SavedStringArray")

    }
}

TableData[indexPath.row]正在转换为字符串,我相信这是一个可以传递给数组的序列。

在我的下一个视图中,我尝试拨打SavedStringArray,但它显示空集[]

    let defaults = UserDefaults.standard
    let myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()

    print(myarray)

如果用户要选择标有"显示1"和"显示3"从表中将返回一个已保存的数组,在UserDefaults中读取["显示1","显示3"]。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我在y

中看到一个小问题
prepareForSegue

我上面所做的是在用户默认值中获取已保存的数组,并将新字符串附加到数组并将其设置回用户默认值。

希望有所帮助