파이어베이스의 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를 이용하는 방법도 공부해야 하 듯 합니다.
'iOS > Swift' 카테고리의 다른 글
[iOS] plist 데이터 불러와서 사용하기 (0) | 2022.02.24 |
---|---|
[iOS] URLSession으로 get method 사용 (0) | 2022.02.22 |
[iOS] 로컬 푸쉬 알림 (Local Notification) (0) | 2022.02.15 |
[iOS] lotties-ios로 움직이는 이미지 넣기 (0) | 2022.02.13 |
[iOS] KingFisher를 사용해 URL로 이미지 사용하기 (0) | 2022.02.13 |