亲爱的 Stackoverflowers,
我对使用 ObjectMapper 有一个障碍,所以让我们直奔主题。
我以 JSON 形式将模型保存为 SQLite 表中的临时记录。每个模型都有一个 Type 字段,用于唯一标识它映射到的模型类型。
例如,如果我们有符合 Animal 协议的模型 Dog、Cat、Mouse,则有一个等效的 AnimalType (DogType, CatType, MouseType) 枚举,这也是每个模型中的一个字段。保存到数据库后,我很难找到一种优雅的方式,将从数据库加载的 JSON 映射到 Model 类的实际实例。
我目前正在做的是通过 NSJSONSerialization 将 JSON 转换为 JSON 字典并在字典中查询类型。一旦找到类型,我就切换所有类型,实例化一个相关的 Mapper 对象并尝试反序列化该对象。我觉得这是一种蛮力方法,并且认为可能有更好的方法来解决这个问题。
结论:
型号:Dog、Cat、Mouse(符合 Animal,有 AnimalType 要求)
枚举:AnimalType(DogType、CatType、MouseType)
问题:如何确定并正确实例化 Mapper 对象以将加载的 JSON 反序列化为实例,而不是手动检查每个 Type 并实例化正确的映射器。
enum AnimalType {
case Dog
case Cat
case Mouse
}
protocol Animal {
var animalType: AnimalType { get }
}
struct Dog: Animal {
var animalType = AnimalType.Dog
}
struct Cat: Animal {
var animalType = AnimalType.Cat
}
struct Mouse: Animal {
var animalType = AnimalType.Mouse
}