按日期对 Firebase 数据进行排序

Posted

技术标签:

【中文标题】按日期对 Firebase 数据进行排序【英文标题】:Sort Firebase data by date 【发布时间】:2016-12-30 07:29:58 【问题描述】:

我不断收到此错误,但我无法调试:

无法将“FIRDatabaseQuery”(0x10b32b700) 类型的值转换为“FIRDatabaseReference”(0x10b32b520)。

该错误来自常规 .swift 文件,其中包含:

import Foundation
import Firebase
import FirebaseDatabase

let DB_BASE = FIRDatabase.database().reference()

class DataService 

    static let ds = DataService()

    private var _REF_BASE = DB_BASE
    private var _REF_INCOMES = DB_BASE.child("incomes").queryOrdered(byChild: "date")
    private var _REF_USERS = DB_BASE.child("users")

    var REF_BASE: FIRDatabaseReference 
        return _REF_BASE
    

    var REF_INCOMES: FIRDatabaseReference 
        return _REF_INCOMES as! FIRDatabaseReference // Thread 1: signal SIGABRT
    

    [...]

在添加 .queryOrdered(byChild: "date")as! FIRDatabaseReference 之前,一切正常,只是我无法按日期排序。

class IncomeFeedVC: UIViewController, UITableViewDelegate, UITableViewDataSource 

    @IBOutlet weak var tableView: UITableView!

    var incomes = [Income]()

    override func viewDidLoad() 
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self

        DataService.ds.REF_INCOMES.observe(.value, with:  (snapshot) in

            if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot] 
                for snap in snapshot 
                    if let incomeDict = snap.value as? Dictionary<String, AnyObject> 
                        let key = snap.key
                        let income = Income(incomeId: key, incomeData: incomeDict)
                        self.incomes.append(income)
                    
                
            
            self.tableView.reloadData()
        )
    

   [...]


我在追求什么?首先,我需要对日期进行排序,然后朝着我的 Sketch 视图工作:

你如何排序?我看到很少有教程使用CoreData。我正在使用 Firebase。

【问题讨论】:

【参考方案1】:

你的private var _REF_INCOMESFIRDatabaseQuery 不是FIRDatabaseReference ..

var REF_INCOMES: FIRDatabaseQuery 
    return _REF_INCOMES

请检查此Q&A 以对您的数组进行排序

【讨论】:

哈!从来没有见过。谢谢。如何获得升/降? 是的等等...我会把链接发给你***.com/questions/37144030/… self.incomes.reverse() 找到它,就在附加之后:***.com/questions/36314374/…

以上是关于按日期对 Firebase 数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章

Firebase + Swift TableView 按日期排序

Firebase 按降序对数据进行排序。 (只排序了一半。)

我们如何使用 Angular 按 TimeStamp 数据类型对 Firebase Firestore 数据进行排序?

如何抓取多条路径并对它们进行排序并将结果带回firebase?

使用 firebase 按最新消息对聊天列表进行排序

无法按 BigQuery/Firebase 中的内容对购买者进行排序