【发布时间】:2018-03-29 05:20:36
【问题描述】:
我正在使用 UserDefaults 在我的 iOS 应用程序中跟踪用户的偏好——当用户选择表格单元格时,它会将单元格的文本添加到我的键中。这部分有效。
现在,我想允许用户在选择一行时从键中删除匹配的键值。如果单元格显示“第 1 集”,则应从 UserDefaults 中删除该值。
来自the documentation,有一个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()
}
这会为Extra argument in call 返回一个错误——我假设它的意思是myarray,但是如果我不能添加那个参数,我怎么能告诉它只删除一个值(存储在myarray)?
如果我打印UserDefaults.standard,它将返回存储的剧集值列表,例如`[“First Episode”、“Second Episode”、“Third Episode”]
知道如何在单击此处的单元格时删除Third Episode 吗?
【问题讨论】:
-
removeObject() 只有一个参数,即键。
-
只使用 defaults.removeObject(forKey: "SavedStringArray")
-
@iMHitesh:现在正在尝试,但现在似乎没有删除任何内容。
-
没错——包含在上面的代码中。请注意,我使用的是
UserDefaults,因为这是 Swift 3。 -
您无需致电
synchronize。您需要将更新后的数组保存在 userdefaults 中,它会覆盖之前的值。您无需从 userdefaults 中删除任何内容
标签: ios swift userdefaults