Получить данные из Firebase

Я пытаюсь получить данные из Firebase, я пробовал вот так:

FIREBASE_REF.childByAppendingPath("tasks").observeEventType(.Value, withBlock: { (snapshot) -> Void in print(snapshot.value) self.tasks = [Task]() var task = Task() let data = snapshot.value as! NSDictionary let tasksFromServer = data.allValues as! [NSDictionary] for taskFromServer in tasksFromServer { task.description = taskFromServer.objectForKey("description") as! String task.startTime = taskFromServer.objectForKey("startTime") as! String task.endTime = taskFromServer.objectForKey("endTime") as! String task.progress = taskFromServer.objectForKey("progress") as! Int let priorityTemp = taskFromServer.objectForKey("priority") as! Int switch priorityTemp { case 0: task.priority = .Low case 1: task.priority = .Medium case 2: task.priority = .High default: break } task.assignee = taskFromServer.objectForKey("assignee") as! String self.tasks.append(task) } MBProgressHUD.hideAllHUDsForView(self.view, animated: true) self.tableView.reloadData() } 

но он показывает ошибку в этой строке:

 let data = snapshot.value as! NSDictionary 

В нем написано: Could not cast value of type '__NSArrayM' (0x10ebfc8d8) to 'NSDictionary' (0x10ebfcd60).

Мои данные из Firebase:

введите описание изображения здесь

Но с другой стороны, я использую другой код в другом ViewController, чтобы получить имя пользователя и роль от Firebase, он работает.

 FIREBASE_REF.childByAppendingPath("users").observeEventType(.Value, withBlock: { (snapshot) -> Void in self.names = [] self.roles = [] let data = snapshot.value as! NSDictionary let employees = data.allValues as! [NSDictionary] for employee in employees { let name = (employee.objectForKey("firstName") as! String) + " " + (employee.objectForKey("lastName") as! String) self.names.append(name) let role = employee.objectForKey("position") as! String self.roles.append(role) } MBProgressHUD.hideAllHUDsForView(self.view, animated: true) self.collectionView.reloadData() }) 

введите описание изображения здесь

Но почему первый код всегда сбой.

Любая помощь будет оценена. Благодарю.

Firebase преобразует ваш объект словаря в массив, если более 50% ключей находятся между 0 и максимальным ключом (именно ваш случай с одним нулевым элементом).

https://www.firebase.com/docs/ios/guide/understanding-data.html#section-arrays-in-firebase

  • Swift - Как создать запрос сортировки по убыванию на Firebase?
  • FCM: устройство iOS зарегистрировано с двумя разными рабочими токенами
  • Swift Firebase Сортировать по расстоянию
  • Firebase Offline Storage Advanced - ручная синхронизация и информация о ходе работы
  • Использование неразрешенного идентификатора 'FIRApp'
  • В Firebase Analytics отсутствуют данные о событиях
  • Создание темы Firebase для каждого пользователя
  • Как определить, включен ли пользователь при использовании Firebase iOS SDK
  • Предупреждения FCM Push не работают на iOS 11
  • Обработка хранилища изображений в Firebase с помощью Swift
  • Firebase: FIRApp.configure () продолжает меня менять на FirebaseApp.configure ()
  • Давайте будем гением компьютера.