2016-12-30 9 views
0

Я получаю эту ошибку, и мне не удалось отладить:Сортировать Firebase данные по дате

Не удалось бросить значение типа «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 зрения:

enter image description here

Как сортировать? Несколько учебников, которые я вижу, использует CoreData. Im использует Firebase.

ответ

2

ваш private var _REF_INCOMES является FIRDatabaseQuery не FIRDatabaseReference ..

var REF_INCOMES: FIRDatabaseQuery { 
    return _REF_INCOMES 
} 

И пожалуйста, проверьте этот Q&A сортировать ваш массив

+0

Ха! никогда не видел этого. Благодарю. Как получить восходящий/нисходящий? – Sylar

+0

да подождите ... Я пришлю вам ссылку http://stackoverflow.com/questions/37144030/how-do-you-properly-order-data-from-firebase-chronological –

+1

Нашел ее с помощью 'self.incomes .reverse() ', сразу после добавления: http://stackoverflow.com/questions/36314374/swift-how-to-create-sort-query-as-descending-on-firebase – Sylar

Смежные вопросы