我可以像这样定义2个类型吗?
typealias MyViewControllerTypeOne = UIViewController
typealias MyViewControllerTypeTwo = UIViewController, MyGreatProtocol
我已经知道第二个不能使用这种语法。
但是获得我想要的结果的方法是什么? (我认为我想要的东西在这里很明显。)
答案 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")
}