오늘은
Firebase에서 데이터를 update하고 delete하는 기능을 알아볼텐데,
view에서 버튼을 눌렀을 때 firebase에 update, delete뿐만아니라 이전시간에 했던 create까지 되도록 해보겠습니다.
오늘의 목표 영상으로 먼저 보겠습니다.
button과 레이아웃 설정은 생략하겠습니다.
CREATE
@IBAction func createCustomer(_ sender: Any) {
saveCustomers()
}
//지난 시간 작성(하단 참조)
https://accompani-i.tistory.com/159
READ
@IBAction func fetchCustomer(_ sender: Any) {
fetchCustomers()
}
Firebase에 작성한 것 불러오기
하단 참조
https://accompani-i.tistory.com/158
extension ViewController {
func fetchCustomers() {
db.child("customers").observeSingleEvent(of: .value) { snapshot in
print("-->\(snapshot.value)")
do {
let data = try JSONSerialization.data(withJSONObject: snapshot.value, options: [])
let decoder = JSONDecoder()
let customers: [Customer] = try decoder.decode([Customer].self, from: data)
self.customers = customers
// 현재 customers를 가져온 것을 불러온 fetch형 커스터머스로 할당 => fetch에서 현재 커스터머스를 세팅하고 프로퍼티 가지고 있으면 update 할 떄 쓸 수 있습니다.
DispatchQueue.main.async {
self.numOfCustomers.text = "# of Customers: \(customers.count)"
}
} catch let error {
print("--> error: \(error.localizedDescription)")
}
}
}
}
UPDATE
var customer: [Customer] = []
func updateCustomers() {
guard customers.isEmpty == false else { return }
//customers가 isEmpty가 false면 업데이트 할 것이 있다는 것이니까 확인해주는 작업입니다.
customers[0].name = "ChaCha"
let dictionary = customers.map { $0.toDictionary }
db.updateChildValues(["customers": dictionary])
}
//업데이트 된 거를 딕셔너리로 만들어서, 데이터베이스에 업데이트 시키면 됩니다.
@IBAction func updateCustomer(_ sender: Any) {
updateCustomers()
}
DELETE
func deleteCustomers() {
db.child("customers").removeValue()
}
@IBAction func deleteCustomer(_ sender: Any) {
deleteCustomers()
}
'iOS > Swift 어플 따라하기' 카테고리의 다른 글
[Swift] ContainerView 속 CollectionView(Horizontal) (NestedScrollView) (0) | 2022.04.05 |
---|---|
[Swift] ScrollView 개념과 레이아웃 설정(scrollview error) (0) | 2022.04.05 |
[Swift] Firebase Realtime Database에서 Parsing Data (0) | 2022.04.03 |
[Swift] Firebase RealtimeDatabase Write Data (0) | 2022.04.02 |
[Swift] Firebase Realtime Database에서 Read Data (0) | 2022.04.02 |