带有UserDefaults的Swift存储阵列

时间:2017-01-21 19:01:20

标签: ios arrays swift

所以我试图存储一些帖子ID基本上所以我可以知道用户读了什么,所以我可以显示一个"看到"按钮。

var actual_data = UserDefaults.standard.array(forKey: "seen_posts")
UserDefaults.standard.setValue(actual_data?.insert(321, at: 0), forKey: "seen_posts")

我试过这个,但它似乎无法运作,Ambiguous use of 'insert(_:at:)'

更新

var actual_data = UserDefaults.standard.array(forKey: "seen_posts")
UserDefaults.standard.set(actual_data?.append(["miodrag"]), forKey: "seen_posts")

1 个答案:

答案 0 :(得分:2)

错误的原因是编译器无法推断出数组的类型。

花费额外的一行来读取,更改和写入数据,例如:

let defaults = UserDefaults.standard
var seenPosts : [Int]
if let actual = defaults.array(forKey: "seen_posts") as? [Int] {
     seenPosts = actual
} else {
     seenPosts = [Int]() 
}
seenPosts.insert(321, at: 0)
defaults.set(seenPosts, forKey: "seen_posts")

或者如果注册了默认密钥seen_posts - 按照建议 - 更简单

let defaults = UserDefaults.standard
var seenPosts = defaults.array(forKey: "seen_posts") as! [Int]
seenPosts.insert(321, at: 0)
defaults.set(seenPosts, forKey: "seen_posts")