【发布时间】:2015-01-11 18:52:44
【问题描述】:
我来自 .NET 世界,所以我对如何在 Swift 中实现泛型感到有些困惑。我正在尝试执行以下操作:
func request<T: Model>(resultHandler: (model: T?) -> ()) {
var model: T? = nil
NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: self.url)!) {
data, response, error in
if let json = NSString(data: data, encoding: NSUTF8StringEncoding) {
model = T(json: json)
resultHandler(model: model)
}
}.resume()
}
并按如下方式消费:
var store: HttpStore = HttpStore(url: ...)
store.request {
model in
println("Task name: \(model.name!)")
}
我收到以下错误:
'没有?'没有名为“name”的成员
我明白为什么了。我没有在调用代码中的任何地方将 T 解析为特定类型。在 .NET 中我会做类似 store.request
有没有办法完成我在这里尝试做的事情?
【问题讨论】: