ios - 通用类型

标签 ios swift generics

我能以某种方式检查 T 的类型吗?我想检查此类型是 Array 还是其他类型。

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

}

最佳答案

一种方法是重载该方法,如下所示:

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 {}

关于ios - 通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40482112/

相关文章:

iphone - 带有自定义覆盖的 UIImagePickerController startVideoCapture

ios - 如果我有一个过滤搜索结果的 UITableView,如何将 ViewDidLoad() 上的 IndexPath 设置为常量,即使在搜索时也是如此

swift - 无法在单独的文件中扩展嵌套结构

c# - 创建仅在运行时已知类型的变量 (C#)

visual-studio - C# 如何使用 IEnumerator 创建通用列表集合

iphone - iOS:google+ sdk 在授予 google+ 权限后重定向到 google.com,而不是重定向回应用程序

iOS 自动布局问题 - 即使没有约束 subview 也会错位

swift - tableView 中的节名称和日期

json - 解析具有可解码问题的 JSON

实现方法的 Java 类具有接口(interface)中指定的子类型的参数