[英]Save an object in NSUserDefaults and Realm
是否可以同时在NSUserDefaults和Realm (Swift) 中保存对象?
我在创建模型时发现了一个问题,因为NSUserDefaults需要继承NSObject
而 Realm 需要继承Object
。
这样做,引发了这个错误
Multiple inheritance from classes 'Object' and 'NSObject'
使用 Swift4 的Codable
协议,您可以将自定义类保存到UserDefaults
而无需遵守旧的NSCoding
协议。
class Team: Object, Codable {
@objc dynamic var id:Int = 0
@objc dynamic var name:String = ""
}
let team = Team()
team.id = 1
team.name = "Team"
let encodedTeam = try! JSONEncoder().encode(team)
UserDefaults.standard.set(encodedTeam, forKey: "team")
let decodedTeam = try! JSONDecoder().decode(Team.self, from: UserDefaults.standard.data(forKey: "team")!)
这解决了多重继承的问题,因为您的类型不再需要从NSObject
继承。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.