从类型中创建数组类型

时间:2018-05-04 17:47:54

标签: swift types casting

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

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

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

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

1 个答案:

答案 0 :(得分:5)

将类型传递为foo.Type是非常 objective-c-ish 模式。

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

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

或仍 swiftier

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