是否可以在Swift中使用通用struct init中的泛型?

时间:2018-05-18 17:30:49

标签: swift generics

我想知道是否可以使用泛型类型来初始化另一个泛型。我在下面放了一个示例代码。

struct Object: Decodable {
    let id: String?
    let type: String?
}

struct JSON<T: Decodable>: Decodable {
    let data: T?
}

func test<T: Decodable>(type: T.Type) {
    let dataFromAPI = Data()
    let model = JSONDecoder().decode(JSON<type>, from: dataFromAPI)
}

我收到此错误消息:

  

使用未声明的类型'type'

1 个答案:

答案 0 :(得分:1)

如果要调用泛型类型结构,请使用:

private void Button_Click(object sender, RoutedEventArgs e)
{
    //PopupWindow
}

或者如果你想解码简单的结构,那么:

   do {
     let model = try JSONDecoder().decode(JSON<T>.self, from: dataFromAPI)

   } catch let message {
        print("JSON serialization error:" + "\(message)")
   }