2017-04-13 321 views
0

enter image description here斯威夫特

排序火力地堡實時數據庫中的數據,我需要在一個表視圖來顯示這些數據,但他們已在混合順序表視圖。我怎樣才能把它們放入與數據庫中相同的順序。請幫忙,我會深表謝意。

第一張圖片顯示我運行該項目後的iPhone屏幕,第二張圖片是數據庫。我希望他們在數據庫中的確切順序。

+0

不清楚您的數據在Firebase數據庫中的排序方式 - 是按*鍵/ UID *還是按優先級*? –

+0

感謝您的回覆,我已經添加了第二張圖片更加清晰。 –

+0

@ muhcomen檢查我的答案。如果您有其他問題 - 歡迎您 –

回答

1

我希望時期對象是這樣的:

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

所以

當你填寫你的Periods陣列充分,只需要使用排序:

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

然後:

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

希望它可以幫助。

+0

當我在viewDidLoad中調用print([PeriodItem] .self)時,我得到Array 而不是實際的數組。有任何想法嗎? –