배움장 - 0tak
Firebase와 씨름
2025-03-22- 오늘은 제리와 송도에 있는 투썸플레이스에 갔다.
- 챌린지 1 팀에서 앱으로 만들 때 디자인을 생각해오자고 해서 SwifUI 뷰를 그리다가 기능이 얼마 안되어서 구현을 시작했다.
- Firestore를 DB로 사용했다. Swift SDK는 처음이었는데 예전에 파이썬이나 노드로 할 떄와 크게 다르지 않았다.
- 다만 Data 레이어와 Domain 레이어를 나누면서 고민이 되었다.
- Firestore에서는 Snapshot이라는 자체적인 타입을 쓰고, 내부에는 딕셔너리로 각 필드에 접근할 수 있다. 즉 자체적으로 스키마를 정의할 수 있는 기능은 없다.
- 우선 Data 레이어에서 순수한 딕셔너리를 반환하도록 하고 (
[String: Any]
), 도메인 레이어에서 원하는 필드에 대해 일일히 nil 검사를 하면서 엔티티로 만들도록 했다. - 쿼리를 빌더 패턴 마냥 여러 메서드로 체이닝해서 만들고 넘길 수 있게 만들어봐도 좋을 것 같다.
- 유저 정보를 받아오는 뷰 모델을 EnvironmentObject로 정의해서 여러 뷰에서 가져다 썼는데 후회했다. 의존성만 복잡해지는 느낌이고 차라리 ObservedObject로 명시적으로 넘겨주는 게 좋을 뻔 했다.
- Firebase Auth의 익명 기능을 이용해 간단하게 식별자를 부여하고 멤버십 시스템을 도입했다.