【问题标题】:appending value to a data array and saving in Userdefault swift将值附加到数据数组并保存在 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]

标签: ios swift userdefaults


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
相关资源
最近更新 更多