๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Database/Firebase

[Firebase] ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉํ•ด๋ณด๊ธฐ(Realtime Database Write,Read,Update,Delete)

by Fomagran ๐Ÿ’ป 2021. 4. 15.
728x90
๋ฐ˜์‘ํ˜•

 

์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!

 

์˜ค๋Š˜์€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๋ฆฌ์–ผํƒ€์ž„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

 

๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~

 

(ํ˜น์‹œ ํ”„๋กœ์ ํŠธ ์„ธํŒ…ํ•˜๋Š”๋ฒ•์„ ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด ๋จผ์ € ์—ฌ๊ธฐ ๋ฅผ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”~)


Realtime Database

 

ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์ฝ˜์†”์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜์…”์„œ Realtime Database๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.

 

๊ทธ๋Ÿฌ๋ฉด ์‹œ์ž‘ํ•˜๊ธฐ ๋ฒ„ํŠผ์ด ์žˆ์„ํ…๋ฐ ์‹œ์ž‘ํ•˜๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์‹œ๊ณ  

 

ํ…Œ์ŠคํŠธ ๋ชจ๋“œ๋กœ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”!

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์„ธํŒ…๋ ๊ฑฐ์—์š”!

 


Terminal

 

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋กœ ์ด๋™ํ•˜์‹  ๋’ค ํŒŸํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ 

 

podfile์— pod 'Firebase/Database' ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.

 

 pod 'Firebase/Database'

 

pod install์„ ํ•ด์ค๋‹ˆ๋‹ค.

 

 

์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด xcodeworkspace ํŒŒ์ผ์ด ์žˆ์„๊ฑฐ์—์š”.

 

ํด๋ฆญํ•˜์…”์„œ Xcode๋ฅผ ์ผœ์ค๋‹ˆ๋‹ค.

 


Xcode

 

AppDelegate

 

์•ฑ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ๋กœ ์ด๋™ํ•˜์…”์„œ ๋จผ์ € Firebase๋ฅผ import ํ•ด์ฃผ์„ธ์š”.

import Firebase

 

didFinishLaunchingWithOptions ๋ฉ”์†Œ๋“œ์— ์•„๋ž˜์™€ ๊ฐ™์ด FirebaseApp,confiure ๋ฅผ ํ•ด์ฃผ์„ธ์š”.

 

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        return true
    }

ViewController

 

FirebaseDatabase๋ฅผ import ํ•ด์ค๋‹ˆ๋‹ค.

import FirebaseDatabase

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์„ ์–ธํ•˜๊ณ 

 

 var ref: DatabaseReference!

 

๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”!

 

 override func viewDidLoad() {
        super.viewDidLoad()
        
        ref = Database.database().reference()
        }

๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ

 

์•„๋ž˜์™€ ๊ฐ™์ด child๋ฅผ ์ •ํ•ด์ฃผ๊ณ  ๊ฐ’์„ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋„ฃ์–ด์ค€ ๋’ค setValue ๋ฉ”์†Œ๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์จ์ค๋‹ˆ๋‹ค.

 

ref.child("people").child("person").setValue(["name":"fomagran"])

 

์ด๋ ‡๊ฒŒํ•˜๋ฉด ์‚ฌ๋žŒ๋“ค์•ˆ์— ์‚ฌ๋žŒ์ด ์žˆ๊ณ  ์‚ฌ๋žŒ์•ˆ์— ํฌ๋งˆ๊ทธ๋žœ์ด๋ž€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 


๋ฐ์ดํ„ฐ ์ฝ๊ธฐ

 

์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ ค๋ฉด getData ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

        ref.getData { (error, snapshot) in
            print(snapshot.value!)
        }

 

๊ทธ๋Ÿฌ๋ฉด ๋“ฑ๋ก๋œ ๋ฐ์ดํ„ฐ๊ฐ€ jsonํ˜•์‹์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ์•ˆ์— ์‚ฌ๋žŒ์•ˆ์— ์ด๋ฆ„์„ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”?

 

์•„๋ž˜์™€ ๊ฐ™์ด ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋‘ ์ ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 ref.child("people").child("person").child("name").getData { (error, snapshot) in
            print(snapshot.value!)
        }


๋ฐ์ดํ„ฐ ๊ด€์ฐฐํ•˜๊ธฐ

 

๊ฒฝ๋กœ๋ฅผ ๊ด€์ฐฐํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์ฝ์–ด์˜ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด ๊ฒฝ๋กœ์— observe ๋ฅผ ๋‹ฌ์•„์ค๋‹ˆ๋‹ค.

    ref.observe(DataEventType.value, with: { (snapshot) in
            print(snapshot.value!)
        })

์‹คํ–‰์‹œ์ผœ์ฃผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ๋•Œ์ฒ˜๋Ÿผ json ํ˜•์‹์œผ๋กœ ๋ถˆ๋Ÿฌ์™€์ง‘๋‹ˆ๋‹ค.

 

ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์ฝ˜์†”์ฐฝ์—์„œ ์ด๋ฆ„์„ foma์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•ฑ์„ ๋”ฐ๋กœ ์žฌ์‹คํ–‰์‹œํ‚ค์ง€ ์•Š์•„๋„ ๋ฐ”๋€ ์ด๋ฆ„์œผ๋กœ json ๋ฐ์ดํ„ฐ๊ฐ€ ๊ด€์ฐฐ๋˜์–ด์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

 


๋ฐ์ดํ„ฐ ์ˆ˜์ •ํ•˜๊ธฐ

 

์šฐ์„  ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ธฐ ์œ„ํ•ด ๋‚˜์ด๊นŒ์ง€ ์ถ”๊ฐ€ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ref.child("people").child("person").setValue(["name":"fomagran","age":26])

 

updateChildValues ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์ด๋งŒ 99์„ธ๋กœ ๋ณ€๊ฒฝํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ref.child("people").child("person").updateChildValues(["age":99])

 

ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์ฝ˜์†”์ฐฝ์— ๊ฐ€๋ฉด ์ด๋ฆ„์€ ๊ทธ๋Œ€๋กœ ์žˆ๊ณ  ๋‚˜์ด๋งŒ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


๋ฐ์ดํ„ฐ ์‚ญ์ œํ•˜๊ธฐ

 

removeValue ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ด์ค๋‹ˆ๋‹ค.

ref.child("people").child("person").removeValue()

 

ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์ฝ˜์†”์ฐฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋ชจ๋‘ ์‚ญ์ œ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


์˜ค๋Š˜์€ ์ด๋ ‡๊ฒŒ ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์“ฐ๊ธฐ,์ฝ๊ธฐ,๊ด€์ฐฐ,์ˆ˜์ •,์‚ญ์ œ๋ฅผ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

ํ˜น์‹œ๋ผ๋„ ํ‹€๋ฆฐ ์ ์ด ์žˆ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•˜์‹  ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”!

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€