[iOS] Firebase Realtime Database 사용하기

chaaansooo·2022년 5월 12일
0

iOS

목록 보기
4/8
post-thumbnail

사전 준비

  1. Firebase Realtime Database에서 설정을 해주고 받은 info.plist를 프로젝트에 추가해준다.
  2. firebase/database를 pod파일에 추가해주고 install해준다.

데이터 불러오기

  1. 뷰컨에서 FirebaseDatabase를 import해준다.
  2. db에 있는 레퍼런스를 불러오기 위해 viewdidLoadDatabase.database().reference()를 프로퍼티에 저장한다.
  3. 값을 불러와야하는데 방금 생성한 프로퍼티에 .observe(.value)를 통해 값을 읽을 수 있다. 그러면 생기는 snapshot을 우리가 사용할 수 있는 형식으로 디코딩해준다.
            self.ref.observe(.value) { snapshot in
            guard let value = snapshot.value as? [String: [String: Any]] else { return }
            do {
                let jsonData = try JSONSerialization.data(withJSONObject: value)
                let cardData = try JSONDecoder().decode([String: CreditCard].self, from: jsonData)
                let cardList = Array(cardData.values)
                self.creditCardList = cardList.sorted { $0.rank < $1.rank }
                
                DispatchQueue.main.async {
                    self.tableView.reloadData()
                }
            } catch let error {
                print("Error json parsing \(error)")
            }
        }

데이터 쓰기

  1. db의 데이터들 중 고유한 값으로 객체를 찾아낸다
  2. 찾아낸 값을 observe하고 받은 snapshot에서 객체의 key를 찾아내고, 그 key에 원하는 값을 넣어준다.
        let cardID = creditCardList[indexPath.row].id
        self.ref.queryOrdered(byChild: "id").queryEqual(toValue: cardID).observe(.value) {[weak self] snapshot in
            guard let self = self,
                  let value = snapshot.value as? [String: [String: Any]],
                  let key = value.keys.first else { return }
            
            self.ref.child("\(key)/isSelected").setValue(true)
        }

데이터 삭제

  1. 데이터 쓰기와 동일하게 객체를 찾아내고
  2. setValue() 대신 removeValue()를 해준다
profile
악으로 깡으로 버티기

0개의 댓글