【发布时间】:2016-10-09 08:31:00
【问题描述】:
我是 swift 的新手,我知道如何在 php 中做到这一点,但我对所有这些词典感到迷茫,我不知道如何在 swift 2 中做到这一点。我一直在谷歌搜索虽然并没有找到我需要的东西。
我正在解析一个 jSon 并将它的值存储在一个循环中的 NSMutableDictionary 中,在循环结束时我将 NSMutableDictionary 存储在一个 NSMutableArray 中,所以最后我有一个包含 43 个元素的 NSMutableArray,每个元素都有大约 10 个键及其值。我需要从它们的“距离”键中对这 43 个元素进行排序,然后按降序对它们进行排序。我不知道目前的方法是否可行。键“距离”的值是一个整数(米)。我不知道在 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)
【问题讨论】:
-
最方便的解决方案是使用 Swift 原生集合类型(
Array<>、Dictionary<>)和sort函数。 -
你能给我看一个这个案例的例子吗?
-
我不知道 JSON 包含什么,但尝试将
NSMutableArray替换为[[String:AnyObject]]和NSMutableDictionary替换为[String:AnyObject]。然后用array.sortInPlace {$0.distance < $1.distance }对数组进行排序 -
将 NSMutableArray 更改为 [String : AnyObject] 是什么意思??
-
我的意思是 使用 Swift 原生集合类型,但这不是正确的替代品。
标签: ios arrays swift sorting swift2