Blockquote
我正在尝试从Firebase在表视图控制器中加载详细信息。以下是服务调用,甚至在观察所有事件之前就已经兑现了诺言。
import Firebase
import PromiseKit
class ContactsTableViewModal: NSObject {
var contacts: [User] = []
func getContacts() ->Promise<[User]> {
return Promise {
seal in
Database.database().reference().child("users").observe(.childAdded, with: { [unowned self] (snapShot) in
guard let contactsDict = snapShot.value as? [String: AnyObject]
else {
return seal.reject(UserError.inputValuesAreEmpty)
}
///Observe the user one at a time from realtime database
let user = User(userName: (contactsDict["username"] as! String), userEmail: contactsDict["email"] as! String)
self.contacts.append(user)
seal.fulfill(self.contacts)
}) { (error) in
seal.reject(error)
}
}
}
}
///The following is calling method invoked from my tableview controller.
func fetchContacts() {
self.contactsTableViewModal.getContacts().done { [unowned self] (users) in
*//Promise is fulfilling immediately and returning nil users*
self.contactsTableView.contacts = users
DispatchQueue.main.async {
self.contactsTableView.reloadData()
}
}.catch { (error) in
print(error)
}
}