【问题标题】:Swift: Sorting Objects by Function ValueSwift:按函数值对对象进行排序
【发布时间】:2023-04-07 01:14:01
【问题描述】:

我正在尝试通过其中一个函数/方法的返回值对一组对象进行排序。我的班级如下:

class Shift{
var Name: String

var Deliveries: [Delivery] = []
var SalesPercentage: Double = 0.0
var LabelForecast: Double = 0.0
var PromotionModsChanging: Double = 0.0

var ShortName: String{
    get{
        return Name[0...2]
    }
}

init(Name: String){
    self.Name = Name
}

func getSales() -> Double{
    return (SalesPercentage / 100) * Settings.ExpectedWeeklySales
}

func totalWeight() -> Double{
    var total: Double = 0.0

    // Add total Deliveries Weight
    for delivery: Delivery in Deliveries{
        total = total + delivery.DeliveryWeight()
    }

    // Add Sales Weight
    total = total + (getSales() * 0.2)

    // Add labels Weight measured at 100 labels per hour
    total = total + (LabelForecast * 0.6)

    // Add Promotion Mods Changing measured at 45 Minutes per mod. Ladder racks and grocery shelving should be classed as 0.5 mods each.
    total = total + (PromotionModsChanging * 45)

    return total
}


}

它们存储的数组如下:

var Shifts: [Shift] = []

然后我将 Shift 对象附加到其中。然后我试图找到一种方法,通过 totalWeight() 函数的返回值来组织 Shifts 数组。有人可以帮忙吗?

【问题讨论】:

    标签: arrays swift sorting object


    【解决方案1】:

    以下将Shifts 的数组按升序排序:

    let sorted = shifts.sorted { $0.totalWeight() < $1.totalWeight() }
    

    或者,不是创建一个新数组并将已排序的shifts 分配给该数组;你可以像这样对shifts 进行排序:

    shifts.sort { $0.totalWeight() < $1.totalWeight() }
    

    请记住,上面的代码只有在您将 shifts 声明为变量时才会起作用。

    【讨论】:

    • 不敢相信。已经尝试过了,但是有语法错误,所以不起作用。干杯兄弟
    猜你喜欢
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多