在 NSUserDefaults 和 Realm 中保存一个对象

Save an object in NSUserDefaults and Realm

是否可以在 NSUserDefaultsRealm (Swift) 中保存对象?

我在创建模型时发现了一个问题,因为 NSUserDefaults 需要继承 NSObject 而 Realm 需要继承 Object

这样做,引发了这个错误

Multiple inheritance from classes 'Object' and 'NSObject'

使用 Swift4 的 Codable 协议,您可以将自定义 class 保存到 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 继承。