Wie kann ich ein NSMutableArray in ein Swift-Array eines bestimmten Typs umwandeln?

Ich migriere mein iOS-Projekt nach Swift. Ich mache diese Klasse für Klasse. Wenn ich Objective C-Methoden von Swift aufrufe, werden viele Objective C-Typen in ihre Swift-Entsprechungen konvertiert.

n meinem Fall ein ZielNSMutableArray wird zu Swift's @ konvertieArray<AnyObject>. Jetzt kommt hier mein Problem. In meiner Swift-Klasse erhalte ich ein solches Array von einem Objective C-Objekt zurück. Jetzt, da ich in der Swift-Welt bin, möchte ich dieses Array auf einen bestimmten Typ anstatt auf @ umwandelAnyObject, weil ich mit Sicherheit weiß, welche Art von Objekten in diesem Array vorhanden sind.

Der Compiler lässt mich das nicht machen! Lassen Sie mich mein Problem vereinfachen, indem ich sage, dass ich in ein Array mit Zeichenfolgen umwandeln möchte. Das habe ich versucht:

var strings = myObjcObject.getStrings() as [String]

Ich erhalte die folgende Fehlermeldung vom Compiler:

'String' ist nicht identisch mit 'AnyObject'

Ich müsste dem Compiler zustimmen, da String ja nicht mit AnyObject identisch ist. Aber ich verstehe nicht, warum das ein Problem ist. Ich kann AnyObject auf String downcasten, wenn ich will, oder?

Ich habe auch versucht:

var strings = myObjcObject.getStrings() as? [String]

Dies scheint ein Schritt in die richtige Richtung zu sein, aber getStrings () gibt ein @ zurüNSMutableArray so bekomme ich folgende Fehlermeldung:

'NSArray' ist kein Untertyp von 'NSMutableArray'

ibt es eine Möglichkeit, das zu tun, was ich hier zu tun versuch

Antworten auf die Frage(7)

Ihre Antwort auf die Frage