По какой-то причине мои данные не загружаются в мое табличное представление. Функция fetchTasks
работает, потому что, если я добавлю к ней контрольную точку, она сообщит мне, что у tasks
есть 151 Задачи, но когда я пытаюсь распечатать задания из любой точки за пределами функции , она сообщает мне, что задачи представляют собой пустой массив , Я бы предположил, что именно поэтому моя функция updateTableView
не работает. Когда я печатаю каждую из этих переменных, он также дает мне пустой массив. Я не получаю никаких ошибок в Xcode, поэтому немного разочаровываю, что я не могу заставить это работать. Любая помощь будет большой. Я уже сделал тонну гуглинга. Заранее спасибо.Данные TableView не загружаются
class TasksTVC: UITableViewController, TaskCellDelegate {
let ref = Firebase(url: URL)
var cell = TaskCell()
var team = ""
var sectionTimes = [String]()
var tasksInSectionArray = [[Task]]()
var tasks = [Task]() {
didSet {
tableView?.reloadData()
}
}
func fetchTasks() {
let tasksRef = Firebase(url: "\(self.ref)/tasks")
tasksRef.queryOrderedByChild("team").queryEqualToValue(team).observeEventType(.Value, withBlock: { snapshot in
var newTasks = [Task]()
for task in snapshot.children {
let tasks = Task(snapshot: task as! FDataSnapshot)
newTasks.append(tasks)
}
self.tasks = newTasks
self.tableView.reloadData()
})
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
fetchTasks()
}
override func viewDidLoad() {
super.viewDidLoad()
updateTableView()
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 44.0
}
func updateTableView() {
sectionTimes = Set(tasks.map{$0.dueTime}).sort()
tasksInSectionArray = sectionTimes.map{section in tasks.filter{$0.dueTime == section}}
print("section times:\(sectionTimes)")
print(tasksInSectionArray)
tableView.reloadData()
}
// MARK: - Table view data source
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sectionTimes[section]
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return sectionTimes.count
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tasksInSectionArray[section].count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("TaskCell", forIndexPath: indexPath) as! TaskCell
// Configure the cell...
cell.selectionStyle = .None
let task = tasksInSectionArray[indexPath.section][indexPath.row]
cell.label.text = task.title
if task.done == true {
cell.checkBox.image = UIImage(named: "checkedbox")
cell.detailLabel.text = "Completed By: \(task.completedBy)"
}
else {
cell.checkBox.image = UIImage(named: "uncheckedbox")
cell.detailLabel.text = ""
}
cell.delegate = self
return cell
}
}
Что делать, если вы используете dispatch_async для размещения reloadData в главной очереди? –
Какой reloadData? Updatetableview()? –
Извините ... Я имел в виду внутри блока, который вы отправляете на запрос. –