それはちょっと長ったらしいですが、それが不足しているキーと非整数値の良好な制御であなたを取得したいです。
var array = [["key": "1"], ["key": "3"], ["key": "2"], ["key":"4"]]
array.sort { (lhs, rhs) -> Bool in
if let leftValue = lhs["key"], let leftInt = Int(leftValue), let rightValue = rhs["key"], let rightInt = Int(rightValue) {
return leftInt < rightInt
} else {
return false // NOTE: you will need to decide how to handle missing keys and non-int values.
}
}
あなたの比較についてもう少し柔軟性があり、少し掃除したいものがあれば。
array.sort {
guard let leftValue = $0["key"], let rightValue = $1["key"] else {
return false // NOTE: you will need to decide how to handle missing keys.
}
return leftValue.localizedStandardCompare(rightValue) == .orderedAscending
}
@JoshCaswellあなたは正しいです。キー名は常に各辞書内で同じです。私は質問を更新しました。 – androisojavaswift
各dictの値を文字列ではなく整数として保存できますか? – Jawwad