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(forKey
。 data(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作为数组检查值是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
Swift:如何检查 UserDefaults 是不是存在,如果不保存选择的标准值?
如何在 Xcode 中终止并重新打开应用程序后检查 UserDefaults (swift)