【问题标题】:how to reorder an NSMutableDictionary of NSMutableDictionaries [duplicate]如何重新排序 NSMutableDictionaries 的 NSMutableDictionary [重复]
【发布时间】: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 的集合(NSArrayNSDictionary 等)的遗留框架。 2) 这似乎更适合结构,它可以符合Comparable 接口。这将使比较变得轻而易举。
  • 我的建议:从头开始,使用 Swift 类型(字典、数组、结构)和 Swift 方法对它们进行排序,而不是 Foundation 的。你会感觉更好,这总是好的,你的代码也会少一些歧义。
  • 这似乎是结构的一个例子。如果您有许多具有相同键的字典,则表明您应该使用结构。

标签: ios swift dictionary swift2 nsmutabledictionary


【解决方案1】:

NSMutatbleDictionary 不保留顺序(排序或插入)。您无法对其进行排序。

您需要一种不同的方法,例如使用已排序键的NSArray。见NSDictionary - Sorting Dictionaries

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2019-09-18
    • 2013-04-14
    • 1970-01-01
    • 2020-01-06
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多