【问题标题】:Save an object in NSUserDefaults and Realm在 NSUserDefaults 和 Realm 中保存一个对象
【发布时间】:2018-04-19 16:12:57
【问题描述】:

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

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

这样做,引发了这个错误

Multiple inheritance from classes 'Object' and 'NSObject'

【问题讨论】:

  • 为什么要这样保存?将 NSUserDefaults 中的值保存在对象领域 ex myobject.id = NSUserDefaults.standardUserDefaults().objectForKey("id") as Int 中的变量中
  • 查看此答案以将 Swift 对象保存到 UserDefaults stackoverflow.com/a/48438338/4644528

标签: ios swift realm nsuserdefaults


【解决方案1】:

使用 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 继承。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多