我必须为我的第一个项目(在线类(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)
}
我为 Array
的 sorted
方法提供了一个闭包,告诉它如何在任意两个给定元素之间执行比较。在此示例中,我编写了一个闭包,将矮个玩家放在高个玩家之前。
关于arrays - Swift:对字典数组中的键值对进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43727806/