在 swift 中从类型转换为字符串,反之亦然

Convert from Type to String and vice versa in swift

我有一个通用的响应序列化程序:

class ResponseArraySerializer<Element: Ball> {

}

有什么方法可以将其转换为字符串,以便我将该字符串存储在 Core Data 数据库中,然后再转换回来?通常我这样使用它:

let redBallSerializer = ResponseArraySerializer<RedBall>()
requestInfo.responseSerializer = redBallSerializer

所以我在从字符串初始化后做了同样的事情(所以当我只有 class 的字符串描述时我可以初始化对象)。可能吗?

This SO answer 描述了如何使用字典将字符串映射到 class.

您可以对存储的各种字符串执行相同的操作。但是,泛型有点难以管理。

首先,您需要制定一个ResponseArraySerializer 遵守的Serializer 协议。该协议将具有所需的 init:

protocol Serializer {
    init()
}

然后您必须向序列化程序添加所需的初始化程序以满足编译器:

required init() {}

最后,将映射创建为字典:

let serializerMapping: [String: Serializer.Type] = [
    "redBallSerializer":ResponseArraySerializer<RedBall>.self
    "greenBallSerializer":ResponseArraySerializer<GreenBall>.self
]

let serializerKey = "redBallSerializer"
let redBallSerializer = serializerMapping[serializerKey]!.init()

仅为泛型类型本身创建映射似乎不起作用,因此您必须存储整个 class。