Все еще не понял! ... Я пытаюсь показать данные из Firebase, но моя переменная "posts" не содержит значений, хотя снимок содержит 3 значения. Я думаю, что-то не так с моим "let posts = snapshot.flatMap (Post.init)".
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var posts = [Post]()
var userPostHandle: DatabaseHandle = 0
var userPostRef: DatabaseReference?
...
override func viewDidLoad() {
super.viewDidLoad()
...
// 2
userPostsHandle = UserService.observePosts { [weak self] (ref, posts) in
self?.userPostsRef = ref
self?.posts = posts
// 3
DispatchQueue.main.async {
self?.tableView.reloadData()
}
}
}
deinit {
// 4
userPostsRef?.removeObserver(withHandle: userPostsHandle)
}
}
(функция из пользовательской службы, называемая наблюдаемыми - у записей есть 0 значений, хотя у моментального снимка были значения, когда я тестировал ранее)
static func observePosts(for user: User = User.current, withCompletion completion: @escaping (DatabaseReference, [Post]) -> Void) -> DatabaseHandle {
let ref = Database.database().reference().child("posts").child(user.username)
return ref.observe(.value, with: { (snapshot) in
guard let posts = Post(snapshot: snapshot) else {
return completion(ref, [])
}
let posts = snapshot.flatMap(Post.init)
completion(ref, posts)
})
}