2017-05-10 1 views
0

Je suis aller chercher des objets à partir des données de base. L'une des propriétés est un identifiant de nom. Les noms peuvent être soit du texte ou un numéro, de sorte que la propriété est un type de chaîne. Ce que je voudrais être en mesure de faire est de trier de sorte que les objets texte sont d'abord, puis les numéros dans l'ordre numérique.Tri des résultats récupérés

Actuellement sa mise les premiers numéros, et les chiffres sont dans le mauvais ordre, à savoir. 300, 301, 3011, 304, 3041, Blanc, Blanc

let sortDescriptor = NSSortDescriptor(key: "number", ascending: true) 
fetchRequest.sortDescriptors = [sortDescriptor] 

Répondre

0

Essayez ce peut-être:

var a: [Int] = [] 
var b: [String] = [] 
if let value = self[key] as? String { 
    if let valueAsInt = Int(value) { 
     a.append(valueAsInt) 
    } else { 
     b.append(value) 
    } 
} 
0

Version Naive:

let fetchedResults = ["300", "301", "3011", "304", "3041", "Blanc", "White"] 

var words = [String]() 
var numbers = [String]() 

for value in fetchedResults { 
    if let number = Int(value) { 
     numbers.append(value) 
    } else { 
     words.append(value) 
    } 
} 

let result = words + numbers 
print(result) 

Prints:

["Blanc", "White", "300", "301", "3011", "304", "3041"]