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

推荐答案

欢迎光临本网站!

你只是把.sort.sorted混淆了.

使用.sorted创建一个新变量.

这里真的没有理由使用低级KeyPathComparator,这是不合适的.只是

let y = x.sorted{
    $0.title.caseInsensitiveCompare($1.title) == .orderedAscending
}

..或者不管你的田地是什么.你可以这么做,这样的事情

let y = x.sorted{
    someDictionary[$0.Code] ?? "" < someDictionary[$1.Code] ?? ""
}

另一个典型的例子,

screen.dataSource.blah.sort(by: {
    $0[index].compare($1[index], options: [.numeric]) == which
})

.numeric这样的选项非常方便.

Swift相关问答推荐

UITableView未显示类数组数据

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

在解码字符串时需要帮助.

如何判断设备是否为 Vision Pro - Xcode 15 Beta 4

如何让默认函数参数引用另一个函数参数?

如何让飞机与 RealityKit 中的物体相撞

为什么在Swift中每次调用Decimal类型的formatted()方法都会越来越慢?

创建 ViewModel 时 iOS 模拟器上的黑屏

调用从 SwiftUI 视图传递到 PageViewController.Coordinator 的函数

在 SwiftUI 中,如何在 UIView 内或作为 UIView 使用 UIHostingController?

在swift 3中将文件保存在文档目录中?

快速的 AES 加密

CMutablePointer - 如何访问它?

自动布局:获取 UIImageView 高度以正确计算单元格高度

自定义 MKAnnotation 标注视图?

如何使用 swift 在 tableview 中填充两个不同数组的两个部分?

在 Swift 中覆盖 UIScrollView 的委托属性(就像 UICollectionView 一样)

UISearchbar TextField 的高度可以修改吗?

如何快速显示数组的所有元素?

iPhone 纵向和 iPad 横向的通用应用程序