我有一个 swift 文件,其中定义了以下数组:
import Foundation
struct Squadre: Identifiable, Hashable {
let id = UUID()
let stagione: String
let squadra: String
let vinte: Int
let pareggiate: Int
let perse: Int
let golfatti: Int
let golsubiti: Int
let diffreti: Int
let punti: Int
let punteggio: Double
init(stagione: String, squadra: String, vinte: Int, pareggiate: Int, perse: Int, golfatti: Int, golsubiti: Int, diffreti: Int, punti: Int, punteggio: Double) {
self.stagione = stagione
self.squadra = squadra
self.vinte = vinte
self.pareggiate = pareggiate
self.perse = perse
self.golfatti = golfatti
self.golsubiti = golsubiti
self.diffreti = golfatti - golsubiti
self.punti = (vinte * 3) + (pareggiate)
self.punteggio = Double(punti + (golfatti / 100) + (diffreti / 1000))
}
static func test() -> [Squadre] {
[ Squadre(stagione: "2023/2024", squadra: "Castello", vinte: 10, pareggiate: 7, perse: 4, golfatti: 34, golsubiti: 27, diffreti: 7, punti: 37, punteggio: 37.347),
Squadre(stagione: "2023/2024", squadra: "Sole", vinte: 10, pareggiate: 7, perse: 4, golfatti: 34, golsubiti: 28, diffreti: 6, punti: 37, punteggio: 37.346),
Squadre(stagione: "2023/2024", squadra: "Spina", vinte: 11, pareggiate: 6, perse: 4, golfatti: 34, golsubiti: 27, diffreti: 7, punti: 39, punteggio: 39.347)]
}
}
现在,我有了一个使用它的视图:
struct HomeView: View {
@State private var squadre: [Squadre] = Squadre.test()
然后我想将此数据使用到 List 对象中,但我想让它们按“punteggio”排序,以便显示的第一个项目是“Spina”。
我尝试按以下方式使用排序:
var squadreSort = squadre.sort(using: [
KeyPathComparator(\.punteggio, order: .forward)])
但没有得到任何结果。
你能帮我吗?
谢谢, A.
简单地这样做。它将按 punteggio 的降序对数组进行排序
squadre.sort(by: {$0.punteggio > $1.punteggio})