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

Ios UserDefaults swift作为数组检查值是否存在,ios,arrays,swift3,Ios,Arrays,Swift3,所以我使用: var defaults = UserDefaults.standard .... seenPosts.insert(CellsData[indexPath.row]["id"] as! Int, at: 0) 所以我基本上使用UserDefaults来设置一个带有id的数组,现在我想检查这个数组是否有值 if (self.defaults.data(forKey: "seen_posts").contains(5){ //do action } 但是不起作用,关于如何

所以我使用:

var defaults = UserDefaults.standard
....
seenPosts.insert(CellsData[indexPath.row]["id"] as! Int, at: 0)
所以我基本上使用UserDefaults来设置一个带有id的数组,现在我想检查这个数组是否有值

if (self.defaults.data(forKey: "seen_posts").contains(5){
    //do action
}
但是不起作用,关于如何检查UserDefaults数组是否在数组中有特定值的任何提示?

使用
数组(forKey
数据(forKey
用于
(NS)数据对象)

您可以检查
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)

}

再次感谢您,仍然无法工作,我这里有一个屏幕截图,错误输出无法将类型为“NSTaggedPointerString”(0x102bf8d10)的值转换为“NSNumber”(0x102200488)。这不是我的错。上面的代码可以工作。您有两个问题。1)key
id
的值似乎是一个字符串。2)将文本字符串转换为
as!字符串?
太疯狂了。不要对任何内容强制转换文本字符串。