Я иду из мира .NET, поэтому я немного смущен тем, как генерические средства реализованы в Swift. Я пытаюсь сделать следующее:Swift - generics in close
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!)")
}
Я получаю следующее сообщение об ошибке:
'T?' does not have a member named 'name'
И я понимаю, почему. Я не разрешаю T к определенному типу в любом месте моего кода вызова. В .NET я бы сделал что-то вроде store.request < Задача>() ... Но я не могу этого сделать в Swift.
Есть ли способ выполнить то, что я пытаюсь сделать здесь?
Это было именно то, что мне нужно. Я попытался указать тип в выражении «in», но забыл использовать круглые скобки. – lintmouse