Swift中一个类中的枚举(enum)类型的数据该如何实现序列化(NSC
发布时间:2020-12-14 07:08:11 所属栏目:百科 来源:网络整理
导读:简述 昨天在开发中遇到了这样一个问题,需要用NSUserDefaults持久化一些数据,其中需要保存一个自己定义的类对象。这就需要我们去实现序列化与反序列化,即把对象转化成二进制数据存入取出时再将二进制数据恢复。 实现序列化 class GameData: NSObject{ var
简述
实现序列化class GameData: NSObject{ var level:Int! var gameMode:GameMode! init(level l:Int,gameMode gm:GameMode){ level = l gameMode = gm } required init?(coder aDecoder: NSCoder) { self.level = aDecoder.decodeIntegerForKey("Level") } func encodeWithCoder(aCoder:NSCoder){ aCoder.encodeInteger(level,forKey:"Level") } }
enum GameMode { case Practice,Challenge }
解决办法
enum GameMode: Int { //不定义值也行,默认就是从0开始 case Practice = 0 case Challenge = 1 }
class GameData: NSObject{ var level:Int! var gameMode:GameMode! init(level l:Int,gameMode gm:GameMode){ level = l gameMode = gm } required init?(coder aDecoder: NSCoder) { self.level = aDecoder.decodeIntegerForKey("Level") self.gameMode = GameMode(rawValue: aDecoder.decodeIntegerForKey("GameMode")) } func encodeWithCoder(aCoder:NSCoder){ aCoder.encodeInteger(level,forKey:"Level") aCoder.encodeInteger(gameMode.rawValue,forKey: "GameMode") } }
结束
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |