对多个项目的数组进行排序

问题描述 投票:0回答:1

我有一个 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.

arrays swift sorting
1个回答
0
投票

简单地这样做。它将按 punteggio 的降序对数组进行排序

squadre.sort(by: {$0.punteggio > $1.punteggio})
© www.soinside.com 2019 - 2024. All rights reserved.