在 Swift 3 中删除 UserDefaults 的单个键值

dar*_*ger 0 ios swift userdefaults

我正在我的 iOS 应用程序中跟踪用户的首选项UserDefaults——当用户选择一个表格单元格时,它会将单元格的文本添加到我的键中。那部分工作。

现在,我想允许用户在选择一行时从键中删除匹配的键值。如果一个单元格显示“第 1 集”,它应该从UserDefaults.

文档中,有一个实例方法removeObject。这是我写的:

    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.removeObject(myarray, forKey: "SavedStringArray")
            defaults.synchronize()
        }
Run Code Online (Sandbox Code Playgroud)

这将返回一个错误Extra argument in call- 我认为这意味着myarray,但如果我不能添加该参数,我怎么能告诉它只删除一个值(存储在 中myarray)?

如果我打印UserDefaults.standard,它将返回存储的剧集值列表,如`[“第一集”、“第二集”、“第三集”]

知道Third Episode在此处单击该单元格时如何删除吗?

Sag*_*han 6

我有以下代码可以为您工作。

if myarray.contains(datastring) {
    myarray.remove(at: myarray.index(of: datastring)!)
} else {
    myarray.append(datastring)
}
defaults.set(myarray, forKey: "SavedStringArray")
Run Code Online (Sandbox Code Playgroud)

此代码将从数组中删除元素并在相同键的用户默认值中再次设置数组,因此它将用新数组替换您的数组。