gelen veriler, böyle denedim alın:Ben Firebase gelen verileri almak için çalışıyorum 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()
}
ama bu satırda hata gösterir:
let data = snapshot.value as! NSDictionary
Diyor ki Could not cast value of type '__NSArrayM' (0x10ebfc8d8) to 'NSDictionary' (0x10ebfcd60).
Firebase'deki verilerim şunun gibi:
Ancak diğer tarafta, kullanıcıların adını ve Firebase rolünü almak için başka bir ViewController kodu kullanın, çalışır.
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()
})
Ama neden ilk kod hep çökmesine.
Herhangi bir yardım için teşekkür ederiz. Teşekkürler.
Eh, snapshot.value' bir 'NSArray' ve değil' görünüyor bir 'NSDictionary' (Hata mesajına göre), bu yüzden' olarak data = snapshot.value edelim! NSArray 've diğer değişimleri bu değişime göre değiştirin. – Larme
Güncelleme sorumu tekrar kontrol edebilir misiniz, Başka bir kodla çalışır. – Khuong
FireBase'i kullanmıyorum ve Swift'i konuşma, bu sadece tahmin, ama şunu fark ettin, 'employeeemanager' ile, 'task' var ve '0' bu endekste olduğunu gösterebilir 0 (bir dizi olarak), "taskignee" vb. Ile bir sözlük alırsınız. – Larme