Упорядочение массива дат от самых последних до самых старых, при этом изменяя другие массивы в соответствии с порядком - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть массив дат, чтобы пойти вместе с двумя другими массивами строк.Я пытаюсь выяснить, как переупорядочить массив дат с самых последних до самых старых.Кроме того, при изменении порядка массива дат два других массива необходимо изменить в том же порядке, что и массивы дат.

Вот массивы

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

Вот код для чтения данных из базы данных и помещения их в объект

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)




    }

    }

1 Ответ

0 голосов
/ 14 февраля 2019

Глядя на ваш код, ошибка заключается в наличии дополнительных массивов (даты, сны и время загрузки).Массив дней - это все, что вам нужно.Если вы хотите заказать его, просто отсортируйте дни:

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

Тогда вы можете делать все, что вам нужно, с sortedDays.Если для какой-то конкретной проблемы вам нужен список только дат или просто снов, вы можете получить его в любое время, когда вам это нужно, с помощью map:

let dates = sortedDays.map { $0.date }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...