gpt4 book ai didi

ios - 如何在 Swift 中从 NSmutableArray 的索引之一(lat lng 坐标)对 NSmutableArray 进行排序

转载 作者:行者123 更新时间:2023-11-30 13:21:48 30 4
gpt4 key购买 nike

我是 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
}

这是加载后我的 NSMutableArray 内容: enter image description here

enter image description here

这是我到目前为止的代码。我试图将排序后的内容加载到新数组中,但在这个新数组中缺少一些键。

//Reorder Array by shop distance from user...
var sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: "distance", ascending: true)
var sortedArray : NSArray = nsDict.sortedArrayUsingDescriptors([sortDescriptor])//Crashes

print(sortedArray)

enter image description here

enter image description here

最佳答案

我已经成功地用这种技术对数组进行了排序:

为我的数组创建了一个新类

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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com