我是 swift 的新手,我知道如何在 php 中做到这一点,但我迷失了所有这些字典,我不知道如何在 swift 2 中做到这一点。我一直在谷歌搜索并没有找到我需要的东西。
我正在解析一个 jSon 并将其值存储在循环中的 NSMutableDictionary 中,在循环结束时我将 NSMutableDictionary 存储在 NSMutableArray 中,所以最后我有一个包含 43 个元素的 NSMutableArray,每个元素都有大约 10 个键及其值。我需要根据“距离”键对这 43 个元素进行排序,并按降序对它们进行排序。我不知道目前的方法是否可行。 “distance”键的值是一个 int 数字(米)。我不知道在 NSMutable 数组中使用 NSMutableDictionary 是否是正确的方法,但我使用它是因为可能有字符串键,而不是数字索引,所以对我来说访问键更容易“距离”比索引8...
首先我加载 json 内容:
private func parseJson(json : NSMutableArray, tableView : UITableView){
var c : Int = 0
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
//more code like this....
TableData.append(Name)
nsDict.insertObject(jsonValues, atIndex: c)
c += 1
}
这是我到目前为止的代码。我试图将排序后的内容加载到新数组中,但在这个新数组中缺少一些键。
//Reorder Array by shop distance from user...
var sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: "distance", ascending: true)
var sortedArray : NSArray = nsDict.sortedArrayUsingDescriptors([sortDescriptor])//Crashes
print(sortedArray)
最佳答案
我已经成功地用这种技术对数组进行了排序:
为我的数组创建了一个新类
import Foundation
class JsonArrayValues {
init(){
}
var name = String()
var distance = Float()
var lat = Float()
var lng = Float()
var openingTime = String()
var country = String()
var code = String()
var address = String()
var categories = String()
var city = String()
var type = String()
var brands = String()
}
我在循环之前实例化了一个:
var jsonArrData : [JsonArrayValues] = []
循环内的另一个,我在其中添加了值:
var c : Int = 0
for j in json {
var jsonValues : JsonArrayValues = JsonArrayValues()
//Get name
guard let Name : String = (value.valueForKey("Name")?.valueForKey("en") as? String) else {
continue
}
jsonValues.name = Name
//more code...
jsonArrData.append(jsonValues)
c += 1
}
最后我能够调用函数来重新排序数组:
//Reorder Array by shop distance from user...
jsonArrData.sortInPlace({$0.distance < $1.distance})
关于ios - 如何在 Swift 中从 NSmutableArray 的索引之一(lat lng 坐标)对 NSmutableArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37713226/