2017-04-13 9 views
0

enter image description hereSortierung Firebase Realtime-Datenbank Daten in Swift

Ich brauche diese Daten in einer Tabellenansicht zu zeigen, aber sie haben in Misch Reihenfolge auf den Tisch Ansicht gewesen. Wie kann ich sie in die gleiche Reihenfolge wie in der Datenbank setzen. Bitte helfen Sie, ich werde sehr geschätzt.

Das erste Bild zeigt meinen iPhone-Bildschirm nach dem Ausführen des Projekts, der zweite ist die Datenbank. Ich möchte sie genau wie in der Datenbank bestellen.

+0

Nicht klar, wie Ihre Daten in Firebase DB sortiert sind - ist es durch * Schlüssel/UID * oder durch * Priorität *? –

+0

Vielen Dank für die Antwort, ich habe das zweite Bild hinzugefügt, um klarer zu sein. –

+0

@muhcomen überprüfe meine Antwort. Wenn Sie weitere Fragen haben - gerne geschehen –

Antwort

1

I Perioden hoffen Objekte wie folgt aussehen:

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

Wenn Sie Ihr Array von Periods vollständig füllen, verwenden Sie einfach Sortierung:

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

Dann:

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

Hoffe es hilft.

+0

Wenn ich print ([PeriodItem] .self) in viewDidLoad aufrufen, bekomme ich Array anstelle des eigentlichen Arrays. Irgendwelche Ideen? –