Ho un problema davvero strano. Sto ordinando una serie di oggetti NSDictionary nella mia app, ma funziona correttamente solo quando l'app è in esecuzione da Xcode. Non appena distribuisco l'app e installo & eseguendolo su un dispositivo, l'ordinamento non funziona più.Livello di ottimizzazione rapido 'Più veloce' interrompe l'ordinamento dell'array
Ecco il codice può essere eseguito in un parco giochi, con alcuni oggetti NSDictionary esempio. Il codice nell'app è lo stesso.
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)
}
Come si può vedere, l'ordinamento nel parco giochi funziona correttamente. Qualcuno sa cosa potrebbe essere sbagliato?
Aggiornamento
Ho trovato che l'ottimizzazione livello Swift è la causa del problema. Impostando questo su -O
(Più veloce), l'ordinamento fallirà. Impostandolo su -Onone
(Nessuno), l'ordinamento funzionerà correttamente.
Qualcuno ha qualche suggerimento su come cambiare il codice, quindi funzionerà con l'ottimizzazione -O
?
Update 2
ho presentato una segnalazione di bug di Apple. Per il momento sto usando un NSSet
per ordinare l'array, che sembra funzionare bene.
Ultimo aggiornamento
non sono stato in grado di riprodurre questo dato Xcode 6.1.1
con lo stesso problema al momento – sachadso
Quale versione di Xcode stai usando? –
E 'XCode Beta 6.3 – sachadso