亲爱的Stackoverflowers,
我在使用 ObjectMapper 方面遇到了障碍,所以让我们开门见山。
我将模型以 JSON 形式保存为 SQLite 表中的临时记录。每个模型都有一个 Type 字段,用于唯一标识它映射到的模型类型。
例如,如果我们有符合 Animal 协议的模型 Dog、Cat、Mouse,则有一个等效的 AnimalType (DogType、CatType、MouseType) 枚举,它也是每个模型中的一个字段。保存到数据库后,我很难找到一种优雅的方法将从数据库加载的 JSON 映射到 Model 类的实际实例。
我目前正在做的是将 JSON 通过 NSJSONSerialization 转换为 JSON 字典,并在字典中查询类型。找到类型后,我会切换所有类型,实例化相关的 Mapper 对象并尝试反序列化该对象。我觉得这是一种蛮力方法,并且认为可能有更好的方法来解决这个问题。
结论:
模型:狗、猫、小鼠(符合动物,有动物类型要求)
枚举:动物类型(DogType、CatType、MouseType)
问题:如何确定并正确实例化 Mapper 对象以将加载的 JSON 反序列化到实例中,而不是手动检查每个类型并实例化正确的映射器。
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 = …Run Code Online (Sandbox Code Playgroud)