Ios 将值追加到数据数组并保存在Userdefault swift中

Ios 将值追加到数据数组并保存在Userdefault swift中,ios,swift,userdefaults,Ios,Swift,Userdefaults,我试图向数组中添加一个值并存储在userdefaults中,但在尝试将新值附加到所提取的值时,最初出现了错误。下面是我的代码 private func putArray(_ value: GMSAutocompletePrediction?, forKey key: String) { guard let value = value else { return } let newArray = getArray(forKey

我试图向数组中添加一个值并存储在userdefaults中,但在尝试将新值附加到所提取的值时,最初出现了错误。下面是我的代码

private func putArray(_ value: GMSAutocompletePrediction?, forKey key: String) {
        guard let value = value else {
            return
        }
        let newArray = getArray(forKey: key)?.append(value) // error here

        storage.setValue(NSKeyedArchiver.archivedData(withRootObject: value), forKey: key)
}

private func getArray(forKey key: String) -> [GMSAutocompletePrediction]? {
        guard let data = storage.data(forKey: key) else { return nil}
        return NSKeyedUnarchiver.unarchiveObject(with: data) as? [GMSAutocompletePrediction]
}
下面是我的错误

无法对不可变值使用mutating成员:函数调用返回不可变值


问题是
getArray(forKey:key)?
是不可变的,您不能将
append
直接附加到它,所以您需要

var newArray = getArray(forKey: key) ?? []
newArray.append(value)

将数组创建为
let newArray=(getArray(forKey:key)?[])+[value]
感谢它现在可以工作了,但是发生了崩溃