我是swift的新手,我知道如何在php中做到这一点,但我迷失了所有这些词典,我不知道如何在swift 2中做到这一点.I&I已经谷歌搜索了一段时间,并没有找到我需要的东西。
我正在解析一个jSon并将它的值存储在循环中的NSMutableDictionary中,并且在循环结束时我将NSMutableDictionary存储在NSMutableArray中,所以最后我有一个NSMutableArray,它有43个元素,每个元素有大约10个键及其值。我需要从他们的#34;距离"中排序这43个元素。键和降序排序。我不知道这种当前方法是否可行。键的值"距离"是一个int数(米)。我不知道是否在NSMutable数组中使用NSMutableDictionary是正确的方法,但是我使用它是因为它可以有字符串键,而不是数字索引,所以对我而言#&# 39;更容易访问密钥"距离"比索引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)
答案 0 :(得分:0)
我设法用这种技术对数组进行排序:
为我的数组
创建了一个新类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})
答案 1 :(得分:0)
任何非平凡项目的第一步应该是花一些时间在github上寻找可以简化问题的工具。在这种情况下,您会发现有很多工具可以简化在Swift中使用JSON的过程。我建议您特别关注EVReflection和Gloss,尽管也有很多人使用SwiftyJSON。
您没有提到您是如何访问网络的;你可以查看AFNetworking或Alamofire。后者也有AlamofireJsonToObjects来帮助。
我还发现JSONExport非常有用。
在这个不幸的问题中,您将花费更少的时间来处理细节,并且更多地继续实现更大的目标。