在一个带有json数据的循环中,我正在创建一个NSMutableDictionary,在其中我正在存储json解析的值:
for j in json {
var jsonValues = NSMutableDictionary()
//Create main value
guard let value = j.valueForKey("value")?.valueForKey("value")! else{
continue
}
//Get name
guard let Name : String = (value.valueForKey("Name")?.valueForKey("en") as? String) else {
continue
}
jsonValues["name"] = Name
//Get geoposition
guard let geoposition = value.valueForKey("geoposition") else {
return
}
//Get lat
if let lat = geoposition.valueForKey("lat") as? String {
jsonValues["lat"] = lat
let flat : Float = (lat as AnyObject).floatValue
//Get lng
if let lng = geoposition.valueForKey("lng") as? String{
jsonValues["lng"] = lng
let flng : Float = (lng as AnyObject).floatValue
let metters : CLLocationDistance = getDistance(flat, flng: flng)
jsonValues["distance"] = floor(metters)
}
}else{}
nsDict.setValuesForKeysWithDictionary(["\(c)" : jsonValues])
c += 1
}
在循环结束时,我将jsonValues mutableDictionary放在一个全局var中,另一个名为nsDict的NSMutableDictionary。
我想重新排序我的字典词典,使用["distance"]
值,这是在metters中,所以我可以在从较低距离到较高距离的tableView中显示它。我已经堆栈溢出和谷歌搜索了一段时间,但我发现只有dictionary.sort()
的例子对我来说没用,因为我使用NSMutableDictionary。找不到NsMutableDictionary的任何示例,并且不太了解apple文档。在另一种语言中,比如php,我会用两个do{}while
来做这个但是我无法用swift 2用给定的方法做到这一点。有人可以帮帮我吗?
这是NSMutableDictionaries的NSMutableDictionary这就是为什么我认为解析技术与订购一个NSMutableDictionary不同
答案 0 :(得分:3)
NSMutatbleDictionary
不保留订单(已排序或插入)。你不能对它进行排序。
您需要一种不同的方法,例如使用NSArray
排序键。请参阅NSDictionary - Sorting Dictionaries。