์๋ ํ์ธ์ 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()
ํ์ด์ด๋ฒ ์ด์ค ์ฝ์์ฐฝ์ผ๋ก ์ด๋ํ๋ฉด ๋ชจ๋ ์ญ์ ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ค๋์ ์ด๋ ๊ฒ ํ์ด์ด๋ฒ ์ด์ค ์ค์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ธฐ,์ฝ๊ธฐ,๊ด์ฐฐ,์์ ,์ญ์ ๋ฅผ ํด๋ณด์์ต๋๋ค.
ํน์๋ผ๋ ํ๋ฆฐ ์ ์ด ์๊ฑฐ๋ ๊ถ๊ธํ์ ์ฌํญ์ด ์์ผ๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
๋๊ธ