从类型中创建数组类型

Igo*_*eev 0 types casting swift

我从我的服务器获取了大量数据.

要序列化它我使用ModelMapper.我有很多Mappable对象,所以我需要一个能够映射任何类型的可映射数据的函数.像这样的东西:

func serializeData(of type: Mappable.Type) -> [Mappable]? {
     return try? response?.map(to: [type].self)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是该map(:)方法需要[Mappable].Type作为输入.[type].self然而是[Mappable.Type].我迷路了.请帮忙

vad*_*ian 5

传递类型foo.Type是一个非常客观的c-ish模式.

在Swift中,我更喜欢通用的解决方案

func serializeData<T : Mappable>() -> [T]? {
     return try? response?.map(to: [T].self)
}
Run Code Online (Sandbox Code Playgroud)

或者仍然更加迅速

func serializeData<T : Mappable>() throws -> [T] {
     return try response?.map(to: [T].self) ?? []
}
Run Code Online (Sandbox Code Playgroud)