【发布时间】:2016-10-08 20:35:59
【问题描述】:
在一个带有 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 放入了一个全局变量,即另一个 NSMutableDictionary,名为 nsDict。
我想使用["distance"] 值(以米为单位)重新排序我的字典字典,因此我可以在 tableView 中从下到上显示它。我一直在使用 stackoverflowing 和谷歌搜索一段时间,但我只找到 dictionary.sort() 的示例,因为我使用 NSMutableDictionary,这对我来说毫无用处。找不到任何带有 NsMutableDictionary 的示例,并且并不真正了解苹果文档。在另一种语言中,比如 php,我会用两个 do{}while 来做到这一点,但我无法使用给定的方法在 swift 2 中做到这一点。有人可以帮帮我吗?
这是 NSMutableDictionaries 的 NSMutableDictionary 这就是为什么我认为解析技术与订购一个 NSMutableDictionary 不同的原因
【问题讨论】:
-
我可以问一下你为什么首先使用
NSMutableDictionary吗? -
@AMomchilov 如果您知道我正在做的更好的方法,欢迎您发布它
-
我不知道你在做什么或试图实现什么。 1) 从我在这里看到的情况来看,您没有使用任何需要您使用
Foundation的集合(NSArray、NSDictionary等)的遗留框架。 2) 这似乎更适合结构,它可以符合Comparable接口。这将使比较变得轻而易举。 -
我的建议:从头开始,使用 Swift 类型(字典、数组、结构)和 Swift 方法对它们进行排序,而不是 Foundation 的。你会感觉更好,这总是好的,你的代码也会少一些歧义。
-
这似乎是结构的一个例子。如果您有许多具有相同键的字典,则表明您应该使用结构。
标签: ios swift dictionary swift2 nsmutabledictionary