订购从最近到最旧的日期数组,同时更改其他数组以匹配订单

问题描述 投票:0回答:1

我有一组日期与其他两个字符串数组一起使用。我正在试图弄清楚如何重新排序从最近到最旧的日期数组。此外,在更改Date Array的顺序时,另外两个数组需要更改为与Date Arrays相同的顺序。

这是阵列

[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 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)




    }

    }
arrays swift date
1个回答
1
投票

查看代码,错误是拥有额外的数组(日期,睡眠和timeUploadeds)。 days数组就是你需要的一切。如果您想订购,只需排序天数:

let sortedDays = days.sorted(by: { $0.date < $1.date} )

然后你可以用sortedDays做任何你需要的事情。如果对于某些特定问题,您需要一个仅列出日期或只是睡眠的列表,您可以随时使用map获取:

let dates = sortedDays.map { $0.date }
© www.soinside.com 2019 - 2024. All rights reserved.