2017-10-03 4 views
2

このような2つのタイプアリアを定義できますか?プロトコルでタイプアリアを作成する

typealias MyViewControllerTypeOne = UIViewController 

typealias MyViewControllerTypeTwo = UIViewController, MyGreatProtocol 

私は既に、この構文では2番目の構文が機能しないことを知っています。

しかし、私が望む結果を得る方法は何ですか? (私は私がしたいことは、ここではかなり明白であると推定。)

答えて

2

Swift 4では、あなたが今&演算子を使用してプロトコルの任意の数のクラスを構成することができます。

typealias MyViewControllerTypeTwo = UIViewController & MyGreatProtocol 

は5時23周りWWDC 2017 "What's New in Swift"をチェック。

Swift 4.0 documentationには「プロトコル構成」のセクションがありますが、プロトコルでクラスを構成することについては触れていません。

+0

use-。私はスイフト3でこれを試していた。それはうまくいかなかった。少なくともこれはSwift 4にとっては良いニュースです。 – Michel

0

あなたはタプルとしてそれを行うことができますに -

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

EDIT: 例私が見

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タイプのオブジェクトを定義するためにどのように使用しますか? onのように使用しようとするとUIViewControllerを使用すると動作しません。 – Michel

+0

@Michel私は答えを編集した、それはあなたがそれをどのように使用しているかによって異なります。 – Jack

関連する問題