【发布时间】:2016-03-23 22:29:11
【问题描述】:
我想用给定的类型实例化一个对象。这是对函数的调用:
buildObjetFromType("data", typeClass: User.self)
函数代码如下:
public static func buildObjectFromType<T>(data: String, typeClass: T.Type) -> T{
print(typeClass) // will print "User"
var object:T?
object as! T.Type // cast the object into an User -> NOT WORKING !
// fill the object with the data, knowing
// return the object once it has been filled with the data.
}
这是我的用户类:
public class User {
private var id:String?
private var login:String?
private var pwd:String?
private var nom:String?
private var prenom:String?
public required init(){
id = ""
login = ""
pwd = ""
nom = ""
prenom = ""
}
public convenience init(_login: String, _pwd: String){
self.init()
login = _login
pwd = _pwd
}
public convenience init(_id: String, _login: String, _pwd: String, _nom: String, _prenom: String){
self.init(_login: _login, _pwd: _pwd)
id = _id
nom = _nom
prenom = _prenom
}
}
【问题讨论】:
-
你在哪里实例化对象?
var object:T?只返回nil。您需要在某处调用init方法。 -
我相信的实例化是“object as!T.Type”还是我错了? T.init() 不起作用,因为它不知道“T”是什么
标签: swift object generics types mirror