반응형
저장한 문서에 타임스탬프를 추가하는 방법
@IBAction func sendPressed(_ sender: UIButton) { // firestore 시작하기 -> 데이터 저장
if let messageBody = messageTextfield.text, let messageSender = Auth.auth().currentUser?.email { // currentuser가 있는 경우 email을 내부에 저장
db.collection(K.FStore.collectionName).addDocument(data: [K.FStore.senderField: messageSender,
K.FStore.bodyField: messageBody,
K.FStore.dateField: Date().timeIntervalSince1970
]) { error in
if let e = error {
print("There was an issue saving data to firestore \(e)")
} else {
print("Successfully saved data.")
}
}
}
}
Date().timeIntervalSince1970을 데이터에 함께 저장하고
func loadMessages() { // firestore 시작하기 -> 데이터 읽기
db.collection(K.FStore.collectionName).order(by: K.FStore.dateField).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를 탭하고 데이터 소스를 트리거할 수 있다는 것
}
}
}
}
}
}
}
db.colooection에서 order(by: "date")로 정렬해주면 된다.
마지막으로 엑세스 권한은
참고사항으로 하고 인증된 사용자만 읽고 쓸 수 있게 변경
반응형
'iOS > Swift 어플 따라하기' 카테고리의 다른 글
[Swift] chat에서 발신자와 수신자 구별 (0) | 2022.09.07 |
---|---|
[Swift] reusablecell 회색 배경 없애기 (0) | 2022.09.07 |
[Swift] FireStore 실시간 업데이트 수신 대기(실시간 데이터 읽어오기) (0) | 2022.09.06 |
[Swift] FireStore에 저장한 데이터 불러오기(데이터 읽기) (0) | 2022.09.06 |
[Swift] FireStore에 데이터 저장하기 (0) | 2022.09.06 |