【问题标题】:JSON Response data Ascending values in swiftJSON响应数据快速升序值
【发布时间】:2021-01-29 10:20:59
【问题描述】:
"buttons": [
 {
 "payload": "3",
 "title": "Check my money transfer status"
 },
 {
 "payload": "1",
 "title": "Need help with money transfer"
 },
 {
 "payload": "2",
 "title": "Have a question on Western Union locations"
 },
 {
 "payload": "4",
 "title": "General questions"
 }
 ]

我收到了上述回复,但订单不同。我需要根据payload升序排序

我希望最终输出如下所示:

"buttons": [
{
 "payload": "1",
 "title": "1. Need help with money transfer"
},
{
"payload": "2",
"title": "2. Have a question on Western Union locations"
},
{
"payload": "3",
"title": "3. Check my money transfer status"
},
{
"payload": "4",
"title": "4. General questions"
}
]

【问题讨论】:

  • 对数组进行排序非常容易。你有什么尝试解决这个问题?给我们看一些代码。
  • 您是如何获得/创建的?你使用自定义结构吗?一些可编码的结构?

标签: swift swift5


【解决方案1】:

首先您需要将 json 转换为字典。我希望你已经做到了。如果没有,请参考这个答案 - https://stackoverflow.com/a/33173192/4637057

完成后,您可以按照此操作来获取已排序的数组。 (我只是给出了结果字典,一些名称为“yourDictionary”)

if var buttonArray = yourDictionary["buttons"] as? [Dictionary<String,String>] {
    buttonArray = buttonArray.sorted {
        ($0["payload"] ?? "") < ($1["payload"] ?? "")
    }
    print(buttonArray)
}

我建议您了解 Swift 高阶函数,以了解更多有关此类技术的信息。这是一个非常好的教程 - https://www.appcoda.com/higher-order-functions-swift/

查看该教程中的“Sorted”部分,了解具体的排序方式。

【讨论】:

    【解决方案2】:

    Swift 字典从不排序。快速谷歌搜索 Swift 有序字典将产生几个可能满足您需求的实现:

    例如:

    https://github.com/lukaskubanek/OrderedDictionary

    https://github.com/Marxon13/M13DataStructures/blob/master/Classes/OrderedDictionary.swift

    【讨论】:

    • 这是关于排序数组而不是字典
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 2020-12-11
    相关资源
    最近更新 更多