目标:对每个 struct.state 字段的结构数组进行排序。
当前情景:数据未按州的字母顺序排序。
代码如下:
struct RevisedNigeriaDataListElement: Identifiable, Equatable {
let id: UUID
let state: String
let cases, active, recovered, deaths: String
}
typealias RevisedNigeriaDataList = [RevisedNigeriaDataListElement]
func processData(origData: NigeriaDataList) {
var data: RevisedNigeriaDataList = []
for item in origData {
let element = RevisedNigeriaDataListElement(
id: UUID(),
state: item.state,
cases: item.cases.str,
active: item.active.str,
recovered: item.recovered.str,
deaths: item.deaths.str
)
data.append(element)
}
revisedData = data.sorted(by: { $0.state: String, $1.state: String in
$0 < $1
})
}
我的问题:是“data.sorted”。
数据结构的每个成员都是一个字符串。
什么是正确的语法?
答案 0 :(得分:4)
$0
和 $1
是 Shorthand Argument Names。正确的语法是这样的:
data.sorted(by: { $0.state < $1.state })
或者,您可以放弃速记参数并自己定义它们:
data.sorted(by: { firstElement, secondElement in
firstElement.state < secondElement.state
})
请注意,您没有输入 : String
。您正在对 sorted
的数组调用 RevisedNigeriaDataList
方法,因此推断出类型。