如何在Swift 2.0中将struct保存到NSUserDefaults

Rya*_*ott 1 nsuserdefaults ios swift2

我有一个名为struct的结构Jar,我想将它们的数组保存到NSUserDefaults.这是jar结构代码:

struct Jar {

    let name: String
    let amount: Int

    init(name: String, amount: Int){
        self.name = name
        self.amount = amount
    }
}
Run Code Online (Sandbox Code Playgroud)

我相信我需要将它转换为NSObject才能保存它.(因为您无法将结构直接保存到NSUserDefaults).我的问题是: 如何将结构数组转换为NSObject?以及如何将NSObject转换回结构数组.

Mil*_*lya 9

这个解决方案的灵感来自于@Duncan C.我写的更熟悉,就像我们自定义类编码和解码一样.

public struct IRDriver {

  public var name: String?
  public var amount: Int?

  public init() {

  }

  // Decode
  public init(dictionary: Dictionary<String, AnyObject>){
    name = dictionary["name"] as? String
    amount = dictionary["amount"] as? Int
  }

  // Encode
  public func encode() -> Dictionary<String, AnyObject> {

    var dictionary : Dictionary = Dictionary<String, AnyObject>()
    dictionary["name"] = name
    dictionary["amount"] = amount
    return dictionary
  }

}
Run Code Online (Sandbox Code Playgroud)