在数组的开头插入一个字符串,而不会在第一个位置丢失该字符串

时间:2018-10-17 23:13:16

标签: arrays swift

我想将String插入数组的第一位。当我尝试插入字符串时,一切正常,但是当我尝试插入另一个字符串时,似乎第一个字符串已从数组中删除。我不知道为什么要这么做。

var History: [String] = []

self.History.insert("\(Username_1)", at: self.History.startIndex)
let defaults = UserDefaults.standard
defaults.set(self.History, forKey: "SavedStringHistory")

在这里,我试图在数组的开头插入名为“ Username_1”的字符串,然后保存它。

let defaults = UserDefaults.standard
let myhistory = defaults.stringArray(forKey: "SavedStringHistory") ?? [String]()
let history = myhistory[indexPath.row]

这就是我检索数组中数据的方式。我认为这是将数组中存在的String替换为新的String。但是我不确定该如何解决。

1 个答案:

答案 0 :(得分:0)

这两行声明的History数组:

var History: [String] = []
...
self.History.insert("\(Username_1)", at: self.History.startIndex)

包含一个元素,即"\(Username_1)"

当您在具有"SavedStringHistory"作为键的用户默认项中设置条目时,它将替换以前的内容。

defaults.set(self.History, forKey: "SavedStringHistory")

相反,您要做的是通过将History的声明更改为与您给myhistory相同的声明来保留以前存储的值(如果有):

var History: [String] = UserDefaults.standard.stringArray(forKey: "SavedStringHistory") ?? [String]()