斯威夫特:试图在这里

创建一个通用的类型初始化

问题描述:

我的头。 我正试图解决这个“易”理解问题。 我有一个​​,我发送请求从许多不同的类。假设我有一个Tweet类和User类。现在斯威夫特:试图在这里</p> <p>创建一个通用的类型初始化

class Tweet { 

    var id: String! 
    var description: String! 

    required init() { } 

} 

class User { 

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

    required init() { } 

} 

,根据Class请求源,我会与每个元素都包含完全相同的特性,作为源ClassJSONArray一个响应。从TweetClass样品要求:

"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** 

} 

错误:**“T”不能建造,因为它没有可访问的初始化

如何访问我的Generic Type Class一种通用方式?这意味着我会通过Class类型并能够将其应用于'T'。我试过把它传递给输入参数,但它不会帮助。我无法弄清楚。有任何想法吗?

+0

等待Swift 4及其内置的JSON编/解码器。由于您的类包含不同的属性,因此无论如何都不可能使用泛型。 – vadian

+0

嘿@vadian。感谢您的回应。你知道什么时候正式发布日期吗? –

+0

不,但通常在九月或十月 – vadian

而不是T(),给这个镜头。

let tweet = resource.init() 
+0

药剂工作。编译错误:输入'T'没有成员 –