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

标签 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] 转换为字符串,我相信这是一个可以传递到数组中的序列。

在我的下一个 View 中,我尝试调用 SavedStringArray 但它显示一个空集 []:

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

    print(myarray)

我的最终游戏是我想要的,如果用户从表中选择标记为“Show 1”和“Show 3”的单元格,将在 UserDefaults 中返回一个保存的数组,读取 ["Show 1", "Show 3"].

有更好的方法吗?

最佳答案

我在你的 prepareForSegue 中看到一个小问题

if let indexPath = self.tableView.indexPathForSelectedRow {

        // test to see if i can store row name in the defaults array
        let defaults = UserDefaults.standard
        var myarray = defaults.stringArray(forKey: "SavedStringArray") ?? [String]()
        if let datastring = TableData[indexPath.row] as? String {
            if !myarray.contains(datastring) {
                myarray.append(datastring)
                defaults.set(myarray, forKey: "SavedStringArray")
                defaults.synchronize()
            }
        }
    }

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

希望对你有帮助

关于ios - 在 Swift 3 中使用表格单元格的值设置 UserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49376950/

相关文章:

ios - 在 Swift 中用包含时间的字符串替换当前日期

ios - 找不到架构 arm64 的 IOSurface 框架

ios - Xamarin.iOS:将文件保存到 Windows 共享文件夹

ios - 在 Swift 中创建应用程序文件夹时出现错误

ios - 语音 : Read items of table cell separately - not as a whole

ios - UIToolBar BarButtonItem IBAction 不起作用

ios - 尝试呈现其 View 不在窗口层次结构中的 UIAlertController (Swift 3/Xcode 8)

ios - 加载主视图或单元格时在 UITableViewCell Swift 中运行代码

ios - 使用 Swift 检查为表格 View 单元格中的文本字段选择的行?

iphone - 在 Tableview 中添加单选按钮遇到一些问题