如何将结构保存到Swift 2.0中的NSUserDefaults
我有一个名为Jar
的结构,我想将它们的数组保存到NSUserDefaults。 这里是jar结构代码:
struct Jar { let name: String let amount: Int init(name: String, amount: Int){ self.name = name self.amount = amount } }
我相信,我将需要将其转换为一个NSObject能够保存它。 (因为你不能直接保存一个结构到NSUserDefaults)。 我的问题是: 如何将结构数组转换为NSObject? 以及如何将NSObject转换回结构数组。
这个解决scheme的灵感来自于@Duncan C.我写了它更熟悉的方式,就像我们在Custom Class编码和解码的情况下一样。
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 } }
为了保存到用户的默认值,你有两个select:让对象符合NSCoding,或实现将其转换为/从NSDictionary的方法,并保存。
像这样的东西:
func dictionaryFromJar() -> NSDictionary { let dictionary: [AnyObject: AnyObject] = ["name": name, "amount": amount] return dictionary }
我认为在Swift词典和NSDictionary之间的自动桥接将在这里工作,但我不积极。 我的敏捷正在生锈。 🙁
- ios自定义地图,地理位置,地图和更多
- 如何在不使用核心位置服务的情况下获取用户的当前城市名称?
- Pod Spec Lint CoreSimulator检测到Xcode.app重定位或CoreSimulatorService版本更改
- 使用自定义UITableViewCell中的button获取单元格string的问题
- 如何覆盖/ swizzle在运行时的私人类的方法objective-c?
- addObjectreplaceNSMutableArray中的前一个对象
- 如何快速本地化故事板上飞行?
- 如何从iPhone应用程序(在Swift中)发布图片到MySQL数据库?
- 为什么这个视图控制器不能设置下一个视图控制器的文本字段?