问题描述:
我撞我的头。 我正试图解决这个“易”理解问题。 我有一个,我发送请求从许多不同的类。假设我有一个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
请求源,我会与每个元素都包含完全相同的特性,作为源Class
为JSON
的Array
一个响应。从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**
}
错误:**“T”不能建造,因为它没有可访问的初始化
如何访问我的Generic Type Class
一种通用方式?这意味着我会通过Class
类型并能够将其应用于'T'。我试过把它传递给输入参数,但它不会帮助。我无法弄清楚。有任何想法吗?
答
而不是T()
,给这个镜头。
let tweet = resource.init()
+0
药剂工作。编译错误:输入'T'没有成员 –
等待Swift 4及其内置的JSON编/解码器。由于您的类包含不同的属性,因此无论如何都不可能使用泛型。 – vadian
嘿@vadian。感谢您的回应。你知道什么时候正式发布日期吗? –
不,但通常在九月或十月 – vadian