2014-09-25 12 views
5

Ich verwende sowohl schnelle und objektive-c in meiner App.Hinzufügen von Inhalt von NSArray zu Swift Array

Ich habe eine CustomClass und ich möchte ein schnelles Array für die Klasse erstellen und fügen Sie Inhalt aus meiner Objective-C-Klasse namens oldClass, die ein Array dieser Objekte in einem NSArray namens ArrayOfCustomClass hat.

var newArray = [CustomClass]() 
newArray += oldClass.arrayOfCustomClass 

Dies verursacht einen Fehler:

'[(CustomClass)]' is not identical to 'CGFloat' 

Hilfe? danke Reza

+1

Zeigen Sie den Rest des tatsächlichen Codes! Was ist 'oldClass'? Was ist 'arrayOfCustomClass'? – matt

Antwort

0

Das Problem ist, dass Swift nichts davon weiß, was in einem NSArray ist. Sie müssen das NSArray explizit auf [CustomClass] (und Sie lügen besser nicht lügen oder Sie werden zur Laufzeit abstürzen).

+0

Aber es kann zusätzliche Probleme geben, die nicht bekannt sind, bis Sie herausfinden, was 'arrayOfCustomClass' wirklich ist. – matt

+0

Wie meine Antwort unten zeigt, musste ich nach AnyObject umwandeln, bevor ich in die CustomClass – reza23

+0

umwandeln konnte. Dies kann sicher mit einer optionalen Besetzung getan werden - siehe meine Antwort. –

0

Was scheint zu funktionieren ist:

newArray += oldClass.arrayOfCustomClass as AnyObject as [CustomClass] 
0

Um dies zu tun, sicher Sie müssen nur einen optionalen Guss versuchen. Wenn Sie denken, nur die NSArray Elemente vom Typ hat CustomClass, können Sie dies tun:

var newArray = [CustomClass]() 
if let customArray = oldClass.arrayOfCustomClass as? [CustomClass] { 
    newArray += customArray 
} 

Wenn Sie die CustomClass Elemente extrahieren (ein wenig anders aus, was Sie gefragt, ich weiß), das ist die Art und Weise:

Verwandte Themen