首页 > 解决方案 > 从类型创建数组类型

问题描述

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

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

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

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

标签: swifttypescasting

解决方案


传递类型foo.Type是一种非常客观的 c模式。

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

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

或者更快

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

推荐阅读