在 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。
我有一个通用的响应序列化程序:
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。