【Swift5】配列の中身(数値・文字・日付)を比較してソートする方法【Xcode11】
Swift5では配列の要素を比較してソートすることが簡単にできます。
数値や文字はもちろん日付の比較でのソートも可能です。
もくじ
- 配列の中身の「数値」を比較してソート
- 配列の中身の「文字」を比較してソート
- 配列の中身の「日付」を比較してソート
1. 配列の中身の「数値」を比較してソート
class Data: NSObject {
var num : Int!
var string : String!
var date : Date!
}
override func viewDidLoad() {
super.viewDidLoad()
var array : [Data] = []
let data1 = Data()
data1.num = 1
array.append(data1)
let data2 = Data()
data2.num = 2
array.append(data2)
let data3 = Data()
data3.num = 3
array.append(data3)
for data in array {
print(data.num) // 1, 2, 3
}
array = array.sorted(by: { (a, b) -> Bool in
return a.num > b.num
})
for data in array {
print(data.num) // 3, 2, 1
}
}
2. 配列の中身の「文字」を比較してソート
class Data: NSObject {
var num : Int!
var string : String!
var date : Date!
}
override func viewDidLoad() {
super.viewDidLoad()
var array : [Data] = []
let data1 = Data()
data1.string = "a"
array.append(data1)
let data2 = Data()
data2.string = "c"
array.append(data2)
let data3 = Data()
data3.string = "b"
array.append(data3)
for data in array {
print(data.string) // a, c, b
}
array = array.sorted(by: { (a, b) -> Bool in
return a.string > b.string
})
for data in array {
print(data.string) // c, b, a
}
}
3. 配列の中身の「日付」を比較してソート
class Data: NSObject { var num : Int! var string : String! var date : Date! }
class Data: NSObject {
var num : Int!
var string : String!
var date : Date!
}
override func viewDidLoad() {
super.viewDidLoad()
var array : [Data] = []
let data1 = Data()
data1.date = Date.init(timeIntervalSince1970: 0) // 今の時間
array.append(data1)
let data2 = Data()
data2.date = Date.init(timeIntervalSince1970: 60) // 1分後
array.append(data2)
let data3 = Data()
data3.date = Date.init(timeIntervalSince1970: 60*60) // 1時間後
array.append(data3)
for data in array {
print(data.date) // 1970-01-01 00:00:00, 1970-01-01 00:01:00, 1970-01-01 01:00:00
}
array = array.sorted(by: { (a, b) -> Bool in
return a.date > b.date
})
for data in array {
print(data.date) // 1970-01-01 01:00:00, 1970-01-01 00:01:00, 1970-01-01 00:00:00
}
}