Ich habe ein wirklich seltsames Problem. Ich sortiere ein Array von NSDictionary-Objekten in meiner App, aber es funktioniert nur ordnungsgemäß, wenn die App von Xcode ausgeführt wird. Sobald ich die App vertreibe und & auf einem Gerät laufe, funktioniert die Sortierung nicht mehr.Swift Optimierungsstufe 'Schnellste' bricht die Sortierung des Arrays
Hier ist der Code kann in einem Spielplatz mit einigen Beispiel NSDictionary Objekte ausgeführt werden. Der Code in der App ist der gleiche.
import UIKit
let p1 = NSDictionary(objects: ["Zoe", 32], forKeys: ["name", "age"])
let p2 = NSDictionary(objects: ["Adrian", 54], forKeys: ["name", "age"])
let p3 = NSDictionary(objects: ["Jeff", 23], forKeys: ["name", "age"])
let p4 = NSDictionary(objects: ["", 66], forKeys: ["name", "age"])
let p5 = NSDictionary(objects: [23], forKeys: ["age"])
let persons = [p1,p2,p3,p4,p5]
let sortedPersons = persons.sorted { (p1, p2) -> Bool in
(p2["name"] as? String) > (p1["name"] as? String)
}
Wie Sie sehen können, funktioniert das Sortieren auf dem Spielplatz richtig. Weiß jemand, was könnte falsch sein?
aktualisieren
fand ich, dass die Swift Optimierungsstufe das Problem verursacht. Wenn Sie dies auf -O
(Schnellste) setzen, wird die Sortierung fehlschlagen. Wenn Sie es auf -Onone
(None) einstellen, wird die Sortierung ordnungsgemäß funktionieren.
Hat jemand irgendwelche Vorschläge, wie Sie den Code ändern, so dass es mit -O
Optimierung funktioniert?
Update 2
ich einen Fehlerbericht bei Apple eingereicht haben. Zur Zeit benutze ich eine NSSet
, um das Array zu sortieren, was gut zu funktionieren scheint.
Letztes Update
Ich habe nicht in der Lage gewesen, diese 6.1.1 da Xcode zu reproduzieren
erleben das gleiche Problem im Moment – sachadso
Welche Version von Xcode verwenden Sie? –
Es ist XCode Beta 6.3 – sachadso