ios - 在 iOS 12 中将 UIColours 数组存档和取消存档到 NSUserDefaults?

标签 ios swift nsuserdefaults uicolor nskeyedarchiver



我对 Swift 还是个新手,我正在尝试将 UIColours 数组存档并取消存档到 NSUserDefaults。我知道在 ios 12 中我需要使用 unarchivedObject(ofClass:from:) - 但我不确定如何使用它。

我试图遵循这个问题:Unarchive Array with NSKeyedUnarchiver unarchivedObject(ofClass:from:) 但我认为我做错了什么。

这是我正在尝试的代码:

let faveColoursArray = [colour1, colour2]

private func archiveColours() -> Data {

    do {
        let data = try NSKeyedArchiver.archivedData(withRootObject: faveColoursArray, requiringSecureCoding: false)

        return data
    } catch {
        fatalError("can't encode data.")
    }


}


   func loadColours() -> [UIColor]? {

      guard let unarchivedObject = UserDefaults.standard.data(forKey: "faveColours") else {
          return nil
      }

      do {
          guard let array = try NSKeyedUnarchiver.unarchivedObject(ofClass: UIColor.self, from: unarchivedObject) else {
            fatalError("Can't load colours.")
        }
        return array
      } catch {
          fatalError("Can't load colours.")
      }

  }

谢谢

最佳答案

您可以使用unarchiveTopLevelObjectWithData(_:):

func loadColours() -> [UIColor]? {
    guard let unarchivedObject = UserDefaults.standard.data(forKey: "faveColours") else {
      return nil
    }

    do {
      guard let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(unarchivedObject) as? [UIColor] else {
        fatalError("Can't load colours.")
      }
      return array
    } catch {
      fatalError("Can't load colours.")
    }

}

关于ios - 在 iOS 12 中将 UIColours 数组存档和取消存档到 NSUserDefaults?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54083747/

相关文章:

android - 使用 Flex 创建 iPhone/Android 应用程序的缺点

ios - 来自相机/相机胶卷的图像仅上传到 Firebase 一次

Swift:在数组中查找 Realm 对象

objective-c - 在 iOS PG 中保存/检索数组的最佳方法是什么

ios - -[_SwiftValue encodeWithCoder :]: unrecognized selector sent to instance

ios - AFJSONRequestOperation 不更新 block 外的内容

Swift + CoreLocation 不工作

json - 为什么从 JSON 返回的值不能与 NSNull 相比较?

swift - 如何快速自动清除 NSUserDefault 值?

ios - 在搜索按钮上隐藏键盘单击代码创建的搜索栏