2017-10-03 12 views
2

이렇게 두 개의 입력란을 정의 할 수 있습니까?프로토콜로 입력란 만들기

typealias MyViewControllerTypeOne = UIViewController 

typealias MyViewControllerTypeTwo = UIViewController, MyGreatProtocol 

는 이미 두 번째는이 구문을 사용하여 작동하지 않는 것을 알고있다.

하지만 원하는 결과를 얻으려면 어떻게해야합니까? 는 (나는 내가 원하는 것은 여기에 꽤 분명하다 가정.) Swift 4에서

답변

2

당신이 지금 & 연산자를 사용하여 프로토콜의 수와 클래스를 구성 할 수 있습니다

typealias MyViewControllerTypeTwo = UIViewController & MyGreatProtocol 

WWDC 2017 "What's New in Swift" 5시 23분 주위를 확인 .

Swift 4.0 documentation에있는 "프로토콜 구성"섹션을 볼 수도 있지만 프로토콜로 구성하는 수업은 언급하지 않습니다.

+0

을 use-. 나는 스위프트 3에서 이것을 시도했다. 효과가 없었다. 최소한 Swift 4에 좋은 소식입니다. – Michel

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") 
    } 
+0

이 유형 정의는 작동하는 것처럼 보이지만 나중에 tupleAlias ​​유형의 객체를 정의하는 데 어떻게 사용합니까? UIViewController를 사용하는 것과 같이 사용하려고하면 작동하지 않습니다. – Michel

+0

@Michel 나는 편집 된 답변을 가지고 있으며, 어떻게 사용하고 있는지에 따라 다릅니다. – Jack