iOS/Swift 어플 따라하기

[Swift] FireStore 실시간 업데이트 수신 대기(실시간 데이터 읽어오기)

Chafle 2022. 9. 6. 21:27
반응형

getDocuments -> addSnapshotListner로만 바꿔주면

 

실시간으로 업데이트 할 수 있다.

 

 

func loadMessages() { // firestore 시작하기 -> 데이터 읽기
        db.collection(K.FStore.collectionName).addSnapshotListener { (querySnapshot, error) in
            self.messages = [] // 비우고 넣고 비우고 넣고
            if let e = error {
                print("There was an issue retrieving data from Firestore. \(e)")
            } else {
                if let snapshotDocuments = querySnapshot?.documents {
                    for doc in snapshotDocuments { // 여기까지는 firebase데이터 읽기와 동일
                        let data = doc.data()
                        if let messageSender = data[K.FStore.senderField] as? String, let messageBody = data[K.FStore.bodyField] as? String {
                            let newMessage = Message(sender: messageSender, body: messageBody)
                            self.messages.append(newMessage)
                            DispatchQueue.main.async { // 인터페이스를 조작하려고 할 때마다(tableView를 업데이트하려고 하고 클로저 내부에 있는 경우 main queue에 홀드 시키는 습관 가지자
                                self.tableView.reloadData() // tableview를 탭하고 데이터 소스를 트리거할 수 있다는 것
                            }
                        }
                    }
                }
            }
        }
    }

 

 

 

반응형