안녕하세요
저 지금 올린 흡연구역 업데이트하는 기능을 개발하고 있는데요,
firebase firestore에서 update를 써도 / set을 써도
(set 써도 기존에 있는 문서면 업데이트 된다고 함. ((그럼 업데이트 함수는 왜 있는겨??)))
흡연구역 정보가 업데이트 되는게 아니라,
새로 생겨서 업로드 되는거예요???

알고봤더니 문제는 문서ID를 기반으로 이 문서가 있는지 없는지 판단을 하는데,
제가 데이터 읽기 쉬우려고
"흡연구역 이름_올린시간"
형태로 문서ID를 설정했거덩요?
그래서 흡구 이름이 변하거나 올린 시간이 변하면
아 이 문서ID는 없는 문서네???
새로 업로드해야겠다!!!!!
하는거였음
안습,,,,OTL
결국 데이터 편하게 보기 위한 꼼수는 실패로 돌아갔구요...
위도 경도 값으로 문서아뒤 설정하는 것으로 구현 완료 했어요!!!
관련 코드는 아래와 같답니다.
private func saveSmokingAreaInfo() {
guard
let name = self.nameTextField.text, !name.isEmpty,
let description = self.descriptionTextView.text, !description.isEmpty,
let lat = self.markerLat,
let lng = self.markerLng
else {
// Alert을 띄워서 사용자한테 알려주기
let alert = UIAlertController(title: "입력 오류", message: "이름, 설명은 필수 입력 항목입니다.", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "확인", style: .default))
self.present(alert, animated: true)
return
}
let currentTime = Timestamp(date: Date())
let safeLat = String(format: "%.9f", lat)
let safeLng = String(format: "%.9f", lng)
let documentID = "\(safeLat)_\(safeLng)"
// 모델로 만들기
let smokingArea = SmokingArea(
imageURL: capturedImageUrl,
name: name,
description: description,
areaLat: lat,
areaLng: lng,
selectedEnvironmentTags: self.selectedEnvironmentTags,
selectedTypeTags: self.selectedTypeTags,
selectedFacilityTags: self.selectedFacilityTags,
uploadUser: self.user?.email ?? "",
uploadDate: currentTime
)
// Firestore 저장
let docRef = db.collection("smokingAreas").document(documentID)
docRef.getDocument { snapshot, error in
if let error = error {
print(error)
}
docRef.setData(smokingArea.asDictionary)
}
}
n시간만에 꺠달아서 짧게 글 남겨봐요
그럼 안녕
'iOS > 흡구오디 -> 어딨쥐' 카테고리의 다른 글
| [흡구오디] 가 [어딨쥐]가 되었습니다. (0) | 2025.12.17 |
|---|---|
| [흡구오디] 에플 로그인 구현하기 (0) | 2025.11.20 |
| [흡구오디] Xcode - 앱 이름 변경하기 (0) | 2025.10.03 |
| [흡구오디] Swift - Firebase 구글 로그인 기능 구현하기 (0) | 2025.10.03 |
| [흡구오디] Swift - firebase Authentication로 이메일 로그인 구현하기 (0) | 2025.10.03 |
댓글