2017-10-03 3 views
2

Kann ich 2 Typalias wie dieses definieren?Erstellen von Typalias mit einem Protokoll

Ich weiß bereits, dass der zweite mit dieser Syntax nicht funktioniert.

Aber was ist der Weg, um das gewünschte Ergebnis zu erhalten? (Ich nehme an, was ich will hier ziemlich offensichtlich ist.)

Antwort

2

In Swift 4 Sie nun eine Klasse mit einer beliebigen Anzahl von Protokollen unter Verwendung des & Betreiber komponieren kann:

typealias MyViewControllerTypeTwo = UIViewController & MyGreatProtocol 

Überprüfen Sie die WWDC 2017 "What's New in Swift" um 05.23 .

Sie können auch den Abschnitt "Protocol Composition" in der Swift 4.0 documentation sehen, obwohl es Komponieren Klassen mit Protokollen nicht erwähnt.

+0

ich sehe. Ich hatte das in Swift 3 versucht. Es hat nicht funktioniert. Zumindest ist dies eine gute Nachricht für Swift 4. – Michel

0

Sie können es als ein Tupel tun -

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

EDIT: Beispiel bedienen-

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

Diese Typalias-Definition scheint zu funktionieren, aber wie benutzt man sie später, um ein Objekt vom Typ tupleAlias ​​zu definieren? Wenn Sie versuchen, es zu verwenden, würde UIViewController es nicht funktionieren. – Michel

+0

@Michel Ich habe Antwort bearbeitet, es hängt davon ab, wie Sie es verwenden. – Jack

Verwandte Themen