App hat contentid
aus einer JSON-Datei als Zahlenfolge kommt in:NSSortDescriptor Auswertung aufsteigende Zahlen (Swift)
let contentid: AnyObject! = jsonFeed["contentid"]
let stream:Dictionary = [
"contentId": contentid as! String,
]
Es später gespeichert wird [NSManagedObject] mit:
var articles = [NSManagedObject]()
let entity = NSEntityDescription.entityForName("Article", inManagedObjectContext: managedContext)
let article = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
article.setValue(stream["contentId"], forKey: "contentid")
articles.append(article)
Schließlich Ich verwende NSSortDescriptor, um Kerndaten in numerischer aufsteigender Reihenfolge zurückzugeben:
Aber Einträge - werden zurückgegeben als: 10, 6, 7, 8, 9. Was wäre die korrekte Methode, um diese Zahlen mithilfe von NSSortDescriptor korrekt auswerten zu lassen?
UPDATE:
Für die Swift-Version finden Sie unter Volkers unten Antwort. Ich endete mit:
let sort = NSSortDescriptor(key: "contentid", ascending: true, selector: "localizedStandardCompare:")
und es bewertet die nummerierten Strings als echte ganze Zahlen.
UPDATE: Swift 2:
Selector Syntax hat sich verändert und nicht mehr akzeptiert objc Zeiger. Danke user1828845.
let sort = NSSortDescriptor(key: "contentid", ascending: true, selector: #selector(NSString.localizedStandardCompare(_:)))
ist 'contentid' eine Zahl oder ein String intern? – Volker
@Volker Es ist intern ein String. – simplexity
Descriptor behandelt diese als Zahlen. Deshalb zeigt es 10 vor 6. Mögliche Lösung ist, diese Zahlen als NSString zu behandeln. –