将值附加到数据数组并保存在 Userdefault swift
appending value to a data array and saving in Userdefault swift
我正在尝试将一个值添加到数组并存储在 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]
}
下面是我的错误
Cannot use mutating member on immutable value: function call returns immutable value
问题是 getArray(forKey: key)?
是不可变的,您不能将 append
直接附加到它,所以您需要
var newArray = getArray(forKey: key) ?? []
newArray.append(value)
我正在尝试将一个值添加到数组并存储在 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]
}
下面是我的错误
Cannot use mutating member on immutable value: function call returns immutable value
问题是 getArray(forKey: key)?
是不可变的,您不能将 append
直接附加到它,所以您需要
var newArray = getArray(forKey: key) ?? []
newArray.append(value)