iOS/Swift

[iOS] 파이어베이스 Realtime Database 읽고 쓰기 기초

유훈 | Yuhun 2022. 2. 15. 16:22
반응형

파이어베이스 -  데이터 읽고 쓰기

 

파이어베이스의 Realtime Database 에서 데이터를 읽고 쓰는 방법을 알아보겠습니다.

공식문서를 보고 작성했지만 정확하지 않은 정보가 있을 수 있습니다.

사실 프론트 개발을 공부하시는 분들은 백엔드까지 다루기 쉽지 않기 때문에 이러한 서비스를 이용하면 편리하게 사용할 수 있을듯 합니다. 

 

파이어베이스에 앱을 등록하는 방법은 아래 포스팅에서 다루고 있으니 바로 들어가 보겠습니다.

파이어베이스 구글 로그인

 

일단 Database를 사용하기 위해 작업을 하고 시작하겠습니다.

pod 'Firebase/Database'

앱의 해당 파이어베이스 레퍼런스 가져오기

var ref: DatabaseReference?

ref = Database.database().reference()

 

데이터 접근 방법

ref는 데이터베이스의 최상위 루트이고 .child()를 이용해 하위 요소로 내려갈 수 있습니다.

self.ref.child("json의 key").child("json의 key2")

// 이러한 방식도 가능
self.ref.child("json의 key/json의 key2")

 

데이터 읽기

데이터를 처음에 한 번만 가져오거나 옵저버를 붙여 데이터베이스의 해당 부터 하위에 변화가 생기면 실행되도록 할 수 있습니다.

 

예시 데이터 최상위를 옵저빙 (어떤 데이터라도 변하면 다시 실행)

ref.observe(DataEventType.value) { snapshot in
	// 스냅샷 처리
	//snapshot.value는 옵셔널 값으로 필요에 따라 타입 캐스팅 + json parsing 해서 사용
}

위와 같이 해당 경로의 snapshot을 찍어와 데이터를 가져옵니다.

 

만약 데이터를 관찰하지 않고 한번만 가지고 오고 싶다면 getData 또는 observeSingleEvent을 사용하라고 합니다.

getData 예시는 다음과 같습니다.

ref.child("데이터 경로").getData(completion:  { error, snapshot in
  guard error == nil else {
  	// 에러 출력
    print(error.localizedDescription)
    return
  }
    // 스냅샷 처리
})

 

 

데이터 쓰기

 

데이터는 setValue를 이용해 쓸 수 있습니다.

일단 setValue로는 다음의 데이터를 정의할 수 있다고 합니다.

- NSString

- NSNumber

- NSDictionary

- NSArray

 

데이터를 쓰는 방법은 다음 처럼 쓸 수 있는데 차이가 있습니다.

최종 경로가 a: "원하는 데이터"라고 하면

1. 경로에 a까지 작성 

-> a의 데이터 변경

self.ref.child("데이터 경로/a").setValue("설정할 데이터")

2. NSarray나 NSDictionary를 이용하는 방법

-> 해당 경로에 [ ] 딕셔너리 값들이 json으로 들어간다.

self.ref.child("데이터 경로").setValue(["a": "설정할 데이터"])

 

상황에 따라 원하는 방법으로 사용해야 할 듯 합니다.

 

 

 

추후에는 query를 이용하는 방법도 공부해야 하 듯 합니다.

반응형