[swift-evolution] Specify type of a delegate which conforms to a protocol

Alexey Demedetskiy alexey.demedetskiy at teamaol.com
Thu Feb 11 16:19:34 CST 2016

As alternative to a protocol solution, you can use value type wrapper:

struct Delegate<T where T:UIViewController, T:UITableViewDelegate> {
    let value: T

class MyController : UIViewController, UITableViewDelegate {}
class WrongController : UIViewController {}

let delegate = Delegate(value: MyController())

//  error: generic parameter 'T' could not be inferred
let delegate = Delegate(value: WrongController())

- Alexey Demedetskiy

> Hi All,
> I used to do this in Obj-C but I'm unable to do this in swift
> *UIViewController<MyProtocol>*delegate;*
> I posted this question on dev forums but didn't get the solution and
> finally I'm reporting here so that It can be added as a features in the
> coming releases.
> Thanks
> Rathore
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160212/3daca5e7/attachment.html>

More information about the swift-evolution mailing list