通用类型

时间:2016-11-08 08:22:56

标签: ios swift generics

我可以以某种方式检查T的类型。我想检查此类型是Array还是别的。

func request<T: Mappable>(completionHandler: (Result<T>) -> Void) {

}

1 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是重载方法,如下所示:

private func request<T: Mappable>(isArray: Bool, completionHandler: (Result<T>) -> Void) {
  if isArray {
    print("is array")
  } else {
    print("is not array")
  }
}

func request<T>(completionHandler: (Result<Array<T>>) -> Void) {
  request(isArray: true, completionHandler: completionHandler)
}

func request<T: Mappable>(completionHandler: (Result<T>) -> Void) {
  request(isArray: false, completionHandler: completionHandler)
}

我假设你已经定义了某个地方:

extension Array: Mappable {}