UserDefaults swift作为数组检查值是不是存在

Posted

技术标签:

【中文标题】UserDefaults swift作为数组检查值是不是存在【英文标题】:UserDefaults swift as array check if value existsUserDefaults swift作为数组检查值是否存在 【发布时间】:2017-01-21 20:34:20 【问题描述】:

所以我正在使用:

var defaults = UserDefaults.standard
....
seenPosts.insert(CellsData[indexPath.row]["id"] as! Int, at: 0)

所以我基本上是使用 UserDefaults 来设置一个带有 ids 的数组,现在我想检查该数组是否有值

if (self.defaults.data(forKey: "seen_posts").contains(5)
    //do action

但是不起作用,有什么提示可以检查 UserDefaults 数组是否在数组中有特定值?

【问题讨论】:

【参考方案1】:

使用array(forKeydata(forKey 用于 (NS)Data 对象。

您可以检查nil 以及该数组是否包含一个表达式中的值:

let defaults = UserDefaults.standard
if let seenPosts = defaults.array(forKey: "seen_posts") as? [Int], !seenPosts.contains(5) 
    seenPosts.insert(CellsData[indexPath.row]["id"] as! Int, at: 0)


【讨论】:

再次感谢您,仍然无法正常工作,我在这里有一个屏幕截图screencast.com/t/VEZNNpLGkTP 并且错误输出无法将类型“NSTaggedPointerString”(0x102bf8d10)的值转换为“NSNumber”(0x102200488)。 这不是我的错。上面的代码有效。你有两个问题。 1) 键 id 的值似乎是一个字符串。 2) 转换文字字符串as! String? 是疯狂的。不要将文字字符串转换为任何内容。

以上是关于UserDefaults swift作为数组检查值是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UserDefaults 向数组添加值?

Swift:如何检查 UserDefaults 是不是存在,如果不保存选择的标准值?

如何在 Xcode 中终止并重新打开应用程序后检查 UserDefaults (swift)

Swift:无法将数组保存到 UserDefaults

Swift 3.0:在 TableView 的 UserDefaults 中存储数组

如何使用 userDefaults 保存打印数组(swift 3)