공식문서 바로가기
Firebase Realtime Database와 app 연결하기
1. Cocoapods 추가
Podfile에 아래 코드 추가
pod 'Firebase/Database'
2. 초기화
AppDelegate.swift 파일에 아래 코드 추가
import Firebase
// Use Firebase library to configure APIs
FirebaseApp.configure()
3. 데이터베이스 참조 정의
데이터베이스 참조를 만들고 쓰려는 위치에 코드 추가
FIRDatabaseReference instance
var ref: DatabaseReference!
ref = Database.database().reference()
데이터 읽고 쓰기
1. 데이터 쓰기
setValue()
데이터 쓰기는 기본적으로 setValue method를 사용한다.
self.ref.child("users").child(user.uid).setValue(["username": username])
위 코드는 지정된 위치에서 하위 노드를 포함한 모든 데이터를 덮어쓴다.
self.ref.child("users/\(user.uid)/username").setValue(username)
전체 객체를 다시 쓰지 않고 하위 항목을 업데이트하는 방법
2. 데이터 읽기
observe()
ref.observe(DataEventType.value) { snapshot in
// ...
}
getData() ???
self.ref.child("users/\(user.uid)/username").getData { (error, snapshot) in
if let error = error {
print("Error getting data \(error)")
}
else if snapshot.exists() {
print("Got data \(snapshot.value!)")
}
else {
print("No data available")
}
}
data를 한번만 불러오는 경우 getData를 사용한다.
3. 데이터 삭제
removeValue()
ref.child("user.id").removeValue()
data 삭제는 setValue(nil)과 동일하다. 하지만 기본적으로 제공하는 removeValue() method를 사용한다.
4. 데이터 업데이트?
(+) 데이터 ID를 모를 때
queryOrdered
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).removeValue()
}