iOS/Swift 어플 따라하기

[Swift] Firebase Realtime Database에서 update, delete

Chafle 2022. 4. 4. 12:00
반응형

오늘은

Firebase에서 데이터를 update하고 delete하는 기능을 알아볼텐데,

view에서 버튼을 눌렀을 때 firebase에 update, delete뿐만아니라 이전시간에 했던 create까지 되도록 해보겠습니다.

 

오늘의 목표 영상으로 먼저 보겠습니다.

 

 

 

button과 레이아웃 설정은 생략하겠습니다.

 

 

 


CREATE

 @IBAction func createCustomer(_ sender: Any) {

        saveCustomers()

    }

//지난 시간 작성(하단 참조)

 

https://accompani-i.tistory.com/159

 

[Swift] Firebase RealtimeDatabase Write Data

데이터를 Firebase에 dictionary형태로 writing해보겠습니다. 서점에서 고객관리 데이터를 넣고싶다고 가정 해보면 override func viewDidLoad() { super.viewDidLoad() saveCustomers() } //saveCustomer()호출 f..

accompani-i.tistory.com

 


READ

    @IBAction func fetchCustomer(_ sender: Any) {

        fetchCustomers()

    }

 

Firebase에 작성한 것 불러오기

하단 참조

https://accompani-i.tistory.com/158

 

[Swift] Firebase Realtime Database에서 Read Data

Firebase에서 데이터를 입력합니다. firstData: Hello Firebase 이후 받아온 데이터를 아래 그림과같이 데이터를 읽어보겠습니다. ViewController import UIKit import Firebase class ViewController: UIViewCo..

accompani-i.tistory.com

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()

    }

 

 

 

반응형