Ich migriere mein iOS-Projekt zu Swift. Ich mache diese Klasse nach Klasse. Wenn ich Objective-C-Methoden von Swift aus anrufe, werden viele Ziel-C-Typen in ihre Swift-Gegenstücke konvertiert.Wie kann ich ein NSMutableArray in ein Swift-Array eines bestimmten Typs umwandeln?
In meinem Fall wird ein Objective C NSMutableArray
in Swifts Array<AnyObject>
konvertiert. Jetzt kommt mein Problem. Innerhalb meiner Swift-Klasse bekomme ich ein solches Array von einem Objective-C-Objekt zurück. Jetzt, wo ich in der Swift-Welt bin, möchte ich dieses Array auf einen bestimmten Typ anstatt AnyObject
umwandeln, weil ich genau weiß, welche Art von Objekten in diesem Array existieren.
Der Compiler lässt mich das nicht tun! Lassen Sie mich mein Problem vereinfachen, indem ich sage, dass ich in ein Array mit Strings umwandeln möchte. Das ist, was ich versuchte:
var strings = myObjcObject.getStrings() as [String]
bekomme ich folgende Fehler von dem Compiler:
ich mit dem Compiler, da String müsste zustimmen ist in der Tat nicht identisch mit ANYOBJECT. Aber ich sehe nicht, warum das ein Problem ist. Ich kann AnyObject in String umwandeln, 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 NSMutableArray
, damit ich die folgende Fehlermeldung erhalten:
'NSArray' is not a subtype of 'NSMutableArray'
Gibt es eine Was kann ich hier tun?
Vielen Dank für Ihre klare und präzise Antwort auf mein Problem kann betrachten! Es funktioniert jetzt! –
Ich habe das verwendet, um mein Problem mit GestureRecognizers zu beheben. 'var arrayOfGestureRecognizers: [UIGestureRecognizer] = self.topViewController.view.gestureRecognizer! als NSArray als [UIGestureRecognizer] 'Danke! –
@Mike, könnten Sie Ihre Antwort mit 'NSArray as aktualisieren! [String] 'für Swift 1.2? –