2017-06-16 5 views
0

enter image description here Ich fand, dass eine Problemumgehung, um ein Objekt von NSOrderedSet zu entfernen, es aus seiner veränderbaren Kopie zu entfernen ist. Nach dem Fixieren Warnungen Xcode, dass der Code ist ich habe:Swift: Entfernen eines Objekts aus NSOrderedSet

let tempSet: NSMutableOrderedSet? = playset!.musicItems!.mutableCopy as? NSMutableOrderedSet 
     tempSet!.remove(musicItem) 
     playset!.musicItems = tempSet 

Aber es gibt mir einen Fehler EXC_BAD_INSTRUCTION. Wie kann ich es beheben?

+0

Sind Sie sicher, dass tempSet das musicItem hat? Überprüfen Sie mit Haltepunkten oder setzen Sie eine if-Anweisung vor tempset –

+0

Gibt es einen Grund, warum Sie kein Swift 'Set' verwenden? – JAL

+2

Nicht verwandt, aber verwenden Sie weniger Frage- und Ausrufezeichen. Nicht alles soll optional sein. @ JAL Swift verfügt nicht über einen nativen geordneten Settyp. – vadian

Antwort

1

mutableCopy ist ein Verfahren, muss es als eine Methode aufgerufen werden, fügen Sie () nachdem es:

playset!.musicItems!.mutableCopy() as? NSMutableOrderedSet 

Sie derzeit versuchen, die Methode () -> Any? selbst zu einem NSMutableOrderedSet, nicht das Ergebnis des Aufrufs dieser Methode zu werfen . Daher die Warnung.

Die Besetzung wird nie gelingen und tempSet wird immer bleiben nil, Absturz auf der nächsten !.

Verwandte Themen