App有contentid
進來作爲來自JSON文件數字字符串:NSSortDescriptor評估升序編號(SWIFT)
let contentid: AnyObject! = jsonFeed["contentid"]
let stream:Dictionary = [
"contentId": contentid as! String,
]
它以後保存到[NSManagedObject]其中:
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)
最後,我使用NSSortDescriptor使核心數據以數值遞增順序返回條目:
let sort = NSSortDescriptor(key: "contentid", ascending: true)
fetchRequest.sortDescriptors = [sort]
但條目 - 返回爲:10,6,7,8,9。使用NSSortDescriptor正確評估這些數字的正確方法是什麼?
UPDATE:
對於斯威夫特版本,請參見下面的沃爾克的答案。我結束了使用:
let sort = NSSortDescriptor(key: "contentid", ascending: true, selector: "localizedStandardCompare:")
它將數字字符串評估爲真正的整數。
UPDATE:迅捷2:
選擇語法已更改並不再接受objc指針。謝謝user1828845。
let sort = NSSortDescriptor(key: "contentid", ascending: true, selector: #selector(NSString.localizedStandardCompare(_:)))
是'contentid'內部的數字還是字符串? – Volker
@Volker它是一個內部字符串。 – simplexity
描述符將它們視爲數字。這就是爲什麼它顯示10之前6.可能的解決辦法是將這些數字視爲NSString。 –