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

时间:2019-09-26 12:16:03

标签: ios swift userdefaults

我正在尝试将一个值添加到数组并存储在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]
}

以下是我的错误

  

不能对不可变值使用变异成员:函数调用返回不可变值

1 个答案:

答案 0 :(得分:1)

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

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