[swift] Firebase Realtime Database를 활용한 실시간 체크리스트 앱 구현하기

Firebase는 실시간 데이터베이스 서비스를 제공하여 실시간으로 데이터를 동기화하고 공유할 수 있는 기능을 제공합니다. 이번에는 Firebase Realtime Database를 활용하여 실시간 체크리스트 앱을 구현해보겠습니다.

준비물

  1. Firebase 프로젝트 생성
  2. Xcode
  3. Swift

프로젝트 설정

  1. Firebase 콘솔에서 새 프로젝트를 만듭니다.
  2. Xcode에서 프로젝트를 생성합니다.
  3. Firebase SDK를 프로젝트에 추가합니다. (CocoaPods를 사용할 경우 Podfile에 pod 'Firebase/Database'를 추가하고 pod install 명령어를 실행합니다.)
  4. Firebase 프로젝트와 연결하기 위해 GoogleService-Info.plist 파일을 프로젝트에 추가합니다.

데이터베이스 구조 설계

Firebase Realtime Database는 JSON의 형태로 데이터를 저장하며, 데이터를 트리 구조로 관리합니다. 이번 예제에서는 다음과 같은 트리 구조로 데이터를 저장할 것입니다.

- checklists
  - checklistKey1
    - title: "미팅 준비"
    - items
      - item1: "회의록 작성"
      - item2: "발표 자료 준비"
  - checklistKey2
    - title: "쇼핑 리스트"
    - items
      - item1: "우유"
      - item2: "빵"

데이터 읽기

Firebase에서 데이터를 읽기 위해서는 데이터의 경로를 참조해야 합니다. 이경우는 checklists 경로를 참조하여 데이터를 가져올 것입니다.

import Firebase

let ref = Database.database().reference().child("checklists")

ref.observe(.value, with: { snapshot in
    // 데이터 처리 로직 작성
})

데이터 쓰기

Firebase Realtime Database에 데이터를 쓰기 위해서는 데이터의 경로를 참조하고, setValue() 메소드를 사용합니다.

let ref = Database.database().reference().child("checklists")

let checklist = [
    "title": "새로운 체크리스트",
    "items": [
        "item1": "내용1",
        "item2": "내용2"
    ]
]

ref.childByAutoId().setValue(checklist)

데이터 갱신

Firebase에서는 데이터가 변경될 때마다 observe()를 사용하여 실시간으로 데이터를 감지할 수 있습니다. 이를 활용하여 데이터 갱신 기능을 구현할 수 있습니다.

let ref = Database.database().reference().child("checklists").child(checklistKey)

ref.observe(.value, with: { snapshot in
    guard let checklistData = snapshot.value as? [String: Any] else {
        return
    }
    
    // 변경된 데이터 처리 로직 작성
})

데이터 삭제

Firebase Realtime Database에서 데이터를 삭제하기 위해서는 removeValue() 메소드를 사용합니다.

let ref = Database.database().reference().child("checklists").child(checklistKey)
ref.removeValue()

결론

이렇게 Firebase Realtime Database를 활용하여 실시간 체크리스트 앱을 구현할 수 있습니다. Firebase의 강력한 실시간 동기화 기능을 사용하여 다양한 실시간 애플리케이션을 개발해보세요.

더 자세한 내용은 Firebase 공식 문서를 참고하세요.