arrays - Swift:对字典数组中的键值对进行排序

标签 arrays swift sorting dictionary

我必须为我的第一个项目(在线类(class))对字典数组进行排序。排序尚未被涵盖,我只能自己做一些研究。确实去了Apple并阅读了有关闭包的内容,观看了youtube以了解排序的概念,但我仍然对如何设置逻辑感到有点困惑(我假设是func)

这是我目前收藏的作品

var players: [[String: Any]] = [

        ["Name": "Joe Smith",
        "Height": 42,
        "Experience": true,
        "Guardians": "Jime and Jan Smith",
        "Team": ""],

        ["Name": "Jill Tanner",
        "Height": 36,
        "Experience": true,
        "Guardians": "Clara Tanner",
        "Team": ""],

        ["Name": "Bill Bon",
        "Height": 43,
        "Experience": true,
        "Guardians": "Sara and Jenny Bon",
        "Team": ""],
]

任何提示或来源都会非常感谢!

最佳答案

我强烈建议您将数据转换为结构数组(或者可能是对象),而不是字典数组。使用 Dictionary 所需的弱类型(即使用 Any 作为值的类型)使得字典使用起来非常烦人。此外,使用词典时还会对性能和安全性造成巨大影响。

struct Player {
    let name: String
    let height: Int
    let experience: Bool
    let guardians: String
    let team: String?
}

let players = [
    Player(
        name: "Joe Smith",
        height: 42,
        experience: true,
        guardians: "Jime and Jan Smith",
        team: nil
    ),
    Player(
        name: "Jill Tanner",
        height: 36,
        experience: true,
        guardians: "Clara Tanner",
        team: nil
    ),
    Player(
        name: "Bill Bon",
        height: 43,
        experience: true,
        guardians: "Sara and Jenny Bon",
        team: nil
    ),
]

// Example, sort by height

let sortedPlayers = players.sorted{ $0.height < $1.height }

for player in sortedPlayers {
    print(player)
}

我为 Arraysorted 方法提供了一个闭包,告诉它如何在任意两个给定元素之间执行比较。在此示例中,我编写了一个闭包,将矮个玩家放在高个玩家之前。

关于arrays - Swift:对字典数组中的键值对进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43727806/

相关文章:

ruby - 在 Ruby 中动态创建数组

c++ - 打印数组时的垃圾值

ios - SWIFT:静态方法中的协议(protocol)功能在 "self"上不可见

计时器到期时快速删除表格 View 单元格

Java 集合排序 : DEBUG/VERBOSE the RootCause of "Comparison method violates its general contract:" errors

javascript - 在 JavaScript 中使用 {} 或 new Object() 创建一个空对象?

android - 在您的应用程序中硬编码数组的最佳方式?

范围对象的 Swift 数组/字典

sorting - R:按另一个 data.frame 对多列进行排序?

algorithm - 在未排序的数组中找到所有对 (x, y) 使得 x + y = z