如何根据对象的属性对对象数组进行排序 - Swift



我在对对象数组进行排序时遇到一些问题:

class Genome {
var id: Float?
var won: Float?
var lost: Float?
var drew: Float?
var fitness: Int = Int.random(in: 0...100)
init(id: Float, won: Float, lost: Float, drew: Float) {
self.id = id
self.won = won
self.lost = won
self.drew = drew
}
}

这是对象。 我有一个包含 50 个"基因组"对象的数组,我需要使用它的适应度属性对其进行排序。

我已经试过了:

genomes.sorted({ $0.fitness > $1.fitness })

但它没有用。 我该怎么做?

sorted有一个返回值。您必须声明一个新变量,并且按顺序排列<

let sortedGenomes = genomes.sorted{ $0.fitness < $1.fitness }

要就地对genomes进行排序,请使用sort

genomes.sort{ $0.fitness < $1.fitness }

旁注:不要将使用非可选值初始化的属性声明为可选属性。

Swift3 & Swift 4 & Swift 5

这将按升序对对象数组进行排序。

let sortedGenomes = genomes.sorted(by: { $0.fitness < $1.fitness })

最新更新