使用协议制作类型

时间:2017-10-03 05:31:12

标签: ios swift3 protocols type-alias

我可以像这样定义2个类型吗?

typealias MyViewControllerTypeOne = UIViewController

typealias MyViewControllerTypeTwo = UIViewController, MyGreatProtocol

我已经知道第二个不能使用这种语法。

但是获得我想要的结果的方法是什么? (我认为我想要的东西在这里很明显。)

2 个答案:

答案 0 :(得分:4)

Swift 4中,您现在可以使用&运算符编写包含任意数量协议的类:

typealias MyViewControllerTypeTwo = UIViewController & MyGreatProtocol

在05:23左右检查WWDC 2017 "What's New in Swift"

您还可以在Swift 4.0 documentation中看到“协议组成”部分,但它没有提到使用协议编写类。

答案 1 :(得分:0)

你可以把它作为一个元组 -

typealias tupleAlias = (viewController :UIViewController,protocol: MyGreatProtocol)

<强> 编辑: 示例使用 -

typealias PersonTuple = (name: String, address: String)

    override func viewDidLoad() {
        super.viewDidLoad()
        let tupleInstance = getPerson(for: "Jack")
        print(tupleInstance.address)//Prints India
    }
    func getPerson(for name: String) -> PersonTuple {
        return (name, "India")
    }