muh comen
muh comen

Reputation: 13

Sorting Firebase Realtime Database data in Swift

enter image description here

I need to show these data in a table view, but they have been on the table view in mixing order. How can I put them in the same order as in the database. Please help, I will deeply appreciated.

First image shows my iPhone screen after running the project, second one is the database. I want them exact order as in the database.

Upvotes: 1

Views: 1015

Answers (1)

Vlad Pulichev
Vlad Pulichev

Reputation: 3272

I hope periods objects look like this:

struct PeriodItem {
    let key: String

    let periodEnd: String
    let periodName: String
    let periodStart: String

    let ref: FIRDatabaseReference?

    init(periodEnd: String, periodName: String, periodStart: String, key: String = "") {
        self.key = key

        self.periodEnd = periodEnd
        self.periodName = periodName
        self.periodStart = periodStart

        self.ref = nil
    }

    init(snapshot: FIRDataSnapshot) {
        key = snapshot.key

        let snapshotValue = snapshot.value as! [String: AnyObject]
        periodEnd = snapshotValue["periodEnd"] as! String
        periodName = snapshotValue["periodName"] as! String
        periodStart = snapshotValue["periodStart"] as! String

        ref = snapshot.ref
    }

    func toAnyObject() -> Any {
        return [
            "periodEnd": periodEnd,
            "periodName": periodName,
            "periodStart": periodStart,

            "key": key
        ]
    }
}

So

When you fill your array of Periods fully, just use sorting:

// periods - array of objects from firebase database
let yourTableViewPeriodsArray = periods.sorted(by: { $0.key < $1.key }) // maybe ">" instead of "<"

Then:

DispatchQueue.main.async {
    self.tableView.reloadData()
}

Hope it helps.

Upvotes: 2

Related Questions