Swift:尝试创建泛型类型初始化器

时间:2017-06-21 01:35:08

标签: ios swift generics types initialization

敲打我的头在这里

。 我试图解决这个问题"简单"了解问题。 我有一个API Endpoint,我发送给许多不同的班级请求。我们假设我有一个Tweet班级和User班级。

class Tweet {

    var id: String!
    var description: String!

    required init() { }

 }

class User {

    var id: String!
    var username: String!
    var likes : Int!

    required init() { }

 }

现在,根据Class请求来源,我会得到Array的回复,其中每个元素都拥有与源Class完全相同的属性JSON 1}}。来自Tweet Class的示例请求:

  "data":
  [{
     {
     "id": "492",
     "description": "HELP!"
     },
     {
     "id": "574",
     "description": "ME!"
     }
   ]}

现在,我尝试创建一个Generic Method,使用Array类型的对象自动将其解析为Class这就是我尝试过的

func sendRequest<T>(resource: T.Type,withProperyList propList : [String], completion: @escaping ([T]?) -> ()) { 


// Create NSURLSession request, fetching data.. converting to json..

guard let mainArray = json["data"] as? NSArray else { return }

for element in mainArray  {

      let tweet = T() // **Error here**

 }

错误:**&#39; T&#39;无法构造,因为它没有可访问的初始化程序

如何以通用方式访问我的Generic Type Class?这意味着我将通过Class类型并能够将其应用于“T&#39;”。我尝试将输入参数传递给它,但它没有帮助。我无法弄明白。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

而不是T(),请试一试。

let tweet = resource.init()