我是斯威夫特的新手,我知道如何在php中做到这一点,但是我迷上了所有的字典,我不知道如何在斯威夫特2中做到这一点。我在谷歌上搜索了一段时间,没有找到我需要的东西。
我正在解析一个jSon,并将它的值存储在循环中的NSMutableDictionary中,在循环的末尾,我将NSMutableDictionary存储在NSMutableArray中,所以在最后,我有一个包含43个元素的NSMutableArray,每个元素都有大约10个带有它们的值的键。我需要从它们的“距离”键中对这43个元素进行排序,并对它们进行降序排序。我不知道这种方法是否可行。键“距离”的值是一个整数(米)。我不知道在NSMutableDictionary数组中使用NSMutable是否是正确的方法,但是我使用它是因为有字符串键而不是数字索引是可能的,所以对我来说,访问键“距离”比索引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
}这是加载后的NSMutableArray内容:


这就是我目前掌握的密码。我试图在一个新数组中加载排序的内容,但是在这个新数组中缺少一些键。
//Reorder Array by shop distance from user...
var sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: "distance", ascending: true)
var sortedArray : NSArray = nsDict.sortedArrayUsingDescriptors([sortDescriptor])//Crashes
print(sortedArray)


发布于 2016-06-09 00:03:34
我成功地用这种技术对数组进行了排序:
为我的数组创建了一个新类
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}) 发布于 2016-06-12 17:41:55
在任何不平凡的项目中,您的第一步应该是花一些时间在github上寻找简化您的问题的工具。在这种情况下,您会发现有很多工具可以简化Swift中使用JSON的操作。我建议您特别关注EVReflection和光泽,尽管也有很多人使用SwiftyJSON。
您没有提到如何访问网络;您可以查看AFNetworking或阿拉莫火。后者还需要AlamofireJsonToObjects的帮助。
我还发现JSONExport非常有用。
你花在细节上的时间会少得多,就像在这个不幸的问题上一样,更多的是为了实现你更大的目标。
https://stackoverflow.com/questions/37713226
复制相似问题