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

Posted

技术标签:

【中文标题】将值附加到数据数组并保存在 Userdefault swift【英文标题】:appending value to a data array and saving in Userdefault swift 【发布时间】:2019-09-26 12:16:03 【问题描述】:

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

下面是我的错误

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

【问题讨论】:

创建数组为let newArray = (getArray(forKey: key) ?? []) + [value] 【参考方案1】:

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

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

【讨论】:

感谢它现在可以工作但发生崩溃***.com/questions/58117112/…

以上是关于将值附加到数据数组并保存在 Userdefault swift的主要内容,如果未能解决你的问题,请参考以下文章

angularjs将值附加到内部数组中

如何将值附加到命令行参数数组?

我的 Userdefault 没有保存数据,也没有被 ObjectMapper 快速映射

循环遍历节点并使用 XSLT 将值附加到字符串

使用 UserDefault 快速存储和检索数组数据

在 CoffeeScript 中,如何将值附加到数组?