我有一个日期数组和另外两个字符串数组。我试图弄清楚如何将日期数组从最近到最旧重新排序。此外,当更改日期数组的顺序时,其他两个数组需要更改为与日期数组相同的顺序。
这是数组
[2019-01-15 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-15 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-15 05:00:00 +0000, 2019-01-15 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-15 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-15 05:00:00 +0000]
["5.2 hrs", "5.02 hrs", "5.77 hrs", "6.72 hrs", "5.88 hrs", "6.75 hrs", "6.42 hrs", "6.08 hrs", "6.93 hrs", "6.75 hrs", "6.92 hrs", "6.75 hrs", "6.6 hrs", "6.75 hrs", "6.75 hrs", "5.88 hrs", "6.27 hrs", "6.32 hrs", "4.52 hrs", "5.2 hrs", "6.13 hrs", "6.38 hrs", "6.92 hrs", "6.92 hrs", "5.88 hrs", "6.13 hrs", "6.75 hrs", "6.25 hrs", "6.07 hrs", "6.92 hrs", "7.2 hrs", "6.27 hrs", "5.77 hrs", "6.75 hrs", "6.0 hrs", "5.77 hrs", "6.92 hrs", "6.37 hrs", "6.93 hrs", "6.25 hrs", "6.42 hrs", "3.17 hrs", "4.52 hrs", "6.0 hrs", "6.8 hrs", "7.2 hrs", "6.6 hrs", "6.37 hrs", "6.75 hrs", "6.93 hrs", "6.42 hrs", "6.08 hrs", "6.38 hrs", "6.75 hrs", "6.18 hrs", "6.6 hrs", "7.2 hrs", "4.52 hrs", "6.72 hrs", "6.25 hrs", "6.42 hrs", "5.02 hrs", "6.32 hrs", "6.18 hrs", "6.13 hrs", "6.08 hrs", "6.92 hrs", "3.17 hrs", "6.07 hrs", "3.17 hrs", "6.37 hrs", "6.0 hrs", "6.07 hrs", "6.18 hrs", "6.55 hrs", "6.8 hrs", "6.42 hrs", "6.8 hrs", "6.32 hrs", "5.02 hrs", "6.75 hrs", "6.38 hrs", "6.75 hrs", "6.75 hrs", "6.55 hrs", "6.55 hrs", "6.42 hrs", "6.72 hrs", "6.27 hrs", "5.2 hrs", "5.2 hrs", "5.02 hrs", "5.77 hrs", "6.72 hrs", "5.88 hrs", "6.75 hrs", "6.42 hrs", "6.08 hrs", "6.93 hrs", "6.75 hrs", "6.92 hrs", "6.75 hrs", "6.6 hrs", "6.75 hrs", "6.75 hrs", "5.88 hrs", "6.27 hrs", "6.32 hrs", "4.52 hrs", "5.2 hrs", "6.13 hrs", "6.38 hrs", "6.92 hrs", "6.92 hrs", "5.88 hrs", "6.13 hrs", "6.75 hrs", "6.25 hrs", "6.07 hrs", "6.92 hrs", "7.2 hrs", "6.27 hrs", "5.77 hrs", "6.75 hrs", "6.0 hrs", "5.77 hrs", "6.92 hrs", "6.37 hrs", "6.93 hrs", "6.25 hrs", "6.42 hrs", "3.17 hrs", "4.52 hrs", "6.0 hrs", "6.8 hrs", "7.2 hrs", "6.6 hrs", "6.37 hrs", "6.75 hrs", "6.93 hrs", "6.42 hrs", "6.08 hrs", "6.38 hrs", "6.75 hrs", "6.18 hrs", "6.6 hrs", "7.2 hrs", "4.52 hrs", "6.72 hrs", "6.25 hrs", "6.42 hrs", "5.02 hrs", "6.32 hrs", "6.18 hrs", "6.13 hrs", "6.08 hrs", "6.92 hrs", "3.17 hrs", "6.07 hrs", "3.17 hrs", "6.37 hrs", "6.0 hrs", "6.07 hrs", "6.18 hrs", "6.55 hrs", "6.8 hrs", "6.42 hrs", "6.8 hrs", "6.32 hrs", "5.02 hrs", "6.75 hrs", "6.38 hrs", "6.75 hrs", "6.75 hrs", "6.55 hrs", "6.55 hrs", "6.42 hrs", "6.72 hrs", "6.27 hrs", "5.2 hrs"]
["06:45 AM", "05:33 AM", "07:10 AM", "07:19 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:41 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "06:45 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "06:50 AM", "07:10 AM", "07:20 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:45 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:41 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:45 AM", "07:24 AM", "07:20 AM", "07:10 AM", "06:50 AM", "07:10 AM", "07:41 AM", "06:50 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:20 AM", "07:10 AM", "07:19 AM", "07:10 AM", "06:50 AM", "05:33 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:10 AM", "06:50 AM", "06:45 AM", "06:50 AM", "07:10 AM", "07:10 AM", "07:24 AM", "07:10 AM", "07:24 AM", "07:00 AM", "05:33 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:19 AM", "07:10 AM", "06:45 AM", "06:45 AM", "05:33 AM", "07:10 AM", "07:19 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:41 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "06:45 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "06:50 AM", "07:10 AM", "07:20 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:45 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:41 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:45 AM", "07:24 AM", "07:20 AM", "07:10 AM", "06:50 AM", "07:10 AM", "07:41 AM", "06:50 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:20 AM", "07:10 AM", "07:19 AM", "07:10 AM", "06:50 AM", "05:33 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:10 AM", "06:50 AM", "06:45 AM", "06:50 AM", "07:10 AM", "07:10 AM", "07:24 AM", "07:10 AM", "07:24 AM", "07:00 AM", "05:33 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:19 AM", "07:10 AM", "06:45 AM"]
日间类(class)
class Day {
var date: Date
var sleep: String
var timeUploaded: String
init(date: Date, sleep: String, timeUploaded: String) {
self.date = date
self.sleep = sleep
self.timeUploaded = timeUploaded
}
}
这是从 firebase 读取数据并将其放入对象的代码
var days = [Day]()
var dates: [Date] = []
var sleeps: [String] = []
var timeUploadeds: [String] = []
func readSleepAnalysis(){
let userID = Auth.auth().currentUser?.uid
self.ref.child("Patient").child(userID!).child("Sleep Analysis").observeSingleEvent(of: .value) { (snapshot) in
guard let days = snapshot.value as? [String: Any] else { return }
for (_,value) in days.enumerated() {
guard let dayDict = value.value as? [String: String] else { return }
let date = dayDict["Date"] ?? ""
let sleep = dayDict["Sleep"] ?? ""
let timeUploaded = dayDict["Time Uploaded"] ?? ""
let isoDate = date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX
let dated = dateFormatter.date(from:isoDate)!
let calendar = Calendar.current
let components = calendar.dateComponents([.month, .day, .year], from: dated)
let finalDate = calendar.date(from:components)
print(finalDate)
let day = Day(date: finalDate!, sleep: sleep, timeUploaded: timeUploaded)
self.days.append(day)
self.dates.append(finalDate!)
self.sleeps.append(sleep)
self.timeUploadeds.append(timeUploaded)
}
print(days)
}
}
最佳答案
查看您的代码,错误在于有额外的数组(日期、 sleep 和 timeUploadeds)。 days 数组是您需要的一切。如果你想订购它,只需对天数进行排序:
let sortedDays = days.sorted(by: { $0.date < $1.date} )
然后您可以使用 sortedDays
做任何您需要的事情。如果对于某些特定问题,您需要仅包含日期或 sleep 的列表,您可以随时使用 map
获取:
let dates = sortedDays.map { $0.date }
关于arrays - 将日期数组从最近到最旧排序,同时更改其他数组以匹配顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54695970/