Swift: Konvertierung zwischen Arrays von 'Protocol' und Arrays der implementierenden Klasse

8

Betrachten Sie ein Protokoll und eine Klasse, die es implementiert:

%Vor%

Ich habe ein Array vom Typ [MyClass] und möchte es einer Variablen vom Typ [MyProtocol] zuweisen. Dies führt jedoch zu einem Fehler beim Versuch in Playground (XCode 6.3, Swift 1.2):

%Vor%

Was ist der richtige Weg, um diese Aufgabe in Swift durchzuführen?

P.S. Interessanterweise funktionieren die Ausdrücke für protocolArrA und protocolArrB bei Verwendung einer Basisklasse anstelle eines Protokolls ohne Fehler.

Es ist auch interessant zu bemerken, dass die Zuweisung einer neu erstellten Instanz von [MyClass] auch gut funktioniert:

%Vor%     
Hatchmaster J 08.06.2015, 09:03
quelle

2 Antworten

10

Sie können mit map jedes Element auf den gewünschten Typ umwandeln:

%Vor%

Beachten Sie, dass Swift in der Lage ist, auf alle oben genannten Array-Typen zu schließen, so dass dies kürzer formuliert werden kann:

%Vor%     
vacawama 08.06.2015, 10:19
quelle
1

Versuchen Sie es

%Vor%

Bei Verwendung von @objc

funktioniert beides %Vor%     
Leo 08.06.2015 09:08
quelle

Tags und Links