์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ExpressJS
- nodejs
- AVAudioPlayer
- Encodable
- Firestore
- String.Index
- Mac
- map
- ํ๋ก๊ทธ๋๋จธ์ค
- mongoose
- Decodable
- CRUD
- MongoDB
- Core Data
- Cloud Firestore
- DispatchQueue
- ios
- Figma
- ์๊ณ ๋ฆฌ์ฆ
- ์ฑ๋์์ธ
- UIRefreshController
- Codable
- Firestore CRUD
- SWiFT
- ์ฑ๋ง๋ค๊ธฐ
- ์ง๋ฒ๋ณํ
- Reduce
- Filter
- RxSwift
- components
- Today
- Total
Focus On Develop ๐ค๐ค
[Swift] Cloud Firestore(1) ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณธ๋ฌธ
[Swift] Cloud Firestore(1) ๋ฐ์ดํฐ ๊ตฌ์กฐ
๋๋ฆฌ๋ฌ์ดํ 2021. 2. 8. 23:30์ค๋์ Google Firebase Cloud Firestore์ ๋ํด์ ๊ณต๋ถํด๋ณด๋ ค๊ณ ํฉ๋๋ค!
์๊ธฐ ๋ค์ด๊ฐ์ ๊ตฌ๊ธ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๊ณ ๋๋ฌ๋ณด์๊ธธ!! ใ ใ ใ
์ฐ๋ฆฌ๊ฐ ์ฑ์ ๊ฐ๋ฐํ ๋ ๋ก์ปฌ ์ ์ฅ์์ธ UserDefault, CoreData๋ง ํ์ํ ๊ฒฝ์ฐ๋ ์ ์ธํ๊ณ , ๋ถ๋ช ํ ์๊ฒฉ Database๊ฐ ํ์ํ๊ฒ ์ฃ ?
์๋ฅผ ๋ค์ด์ ์นด์นด์คํก ์ฑํ ์ด๋, ๊ณต์ ๋ฌธ์ํจ ๋ฑ์ ์ฌ์ฉ์ A์ B๊ฐ ์๋ก ๋๊ธฐํ๋๋ ์ฑํ๋ฉด์ ๋ด์ผํ๋ค๋ฉด, ๋ก์ปฌ ์ ์ฅ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ถ๋ช ํ ๋ถ์กฑํ๊ฒ ์ฃ ! A๊ฐ ์ฑํ ์ ๋ณด๋ด๋ฉด ์ด๋๊ฐ Database์ ๋ด์ฉ์ด ์ ์ฅ๋๊ณ , ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ B๋ A๊ฐ๋ณด๋ธ ๋ฉ์ธ์ง๋ฅผ ๋ณผ ์ ์๊ฒ ๋๋ต๋๋ค.
์ด๋ ๊ฒ ์ฐ๋ฆฌ๋ ์๋ฒ์ Database๋ฅผ ๊ผญ ์ฌ์ฉํด์ผ ํ๋๋ฐ... ๐ ๋๊ตฐ๊ฐ๋ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ , ๋๊ตฐ๊ฐ๋ DB๋ฅผ ๊ตฌ์ฑํ๊ณ , ๋ ๋๊ตฐ๊ฐ๋ API๊ฐ์ WebService๋ฅผ ๊ฐ๋ฐํด์ค์ผ, ์ฑ์์๋ WebService์ End-point๋ฅผ ํธ์ถํด์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋๋ฐ์~!
์ธ์ ํ์ํ Backend ๊ธฐ์ ์คํ์ ๋ชจ๋ ์ตํ์ ๊ตฌ์ฑํ๊ณ ์ฑ์ ๋ง๋ค๊ฒ ์ด์ ใ ใ
๊ทธ๋ฐ๋ฐ! ์ด B/E์ ๋ชจ๋ ๊ฑธ ์ ๊ณตํด์ฃผ๋ ์๋น์ค๊ฐ ๋ฐ๋ก๋ฐ๋ก Firebase์ ๋๋ค!!
์ ๋ ์์ ์ Firebase๋ฅผ ํตํด Realtime Database๋ฅผ ์ฌ์ฉํด์ Demo Project๋ฅผ ์ฐ์ตํด๋ณธ์ ์ด ์๋๋ฐ, ์๋ฌด๋๋ ์ด์ ๋ Cloud ์๋์ธ๋งํผ!! ใ ใ ใ ์๋์ ๋ง๊ฒ Cloud๊ธฐ๋ฐ์ Database์ธ Firestore์ ๋ํด์ ๊ณต๋ถํด๋๋๊ฒ ์ข์ ๊ฒ ๊ฐ์์ ํ๋ฒ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๐
Firestore ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ณผ์ ์ด๋ cocoapods ์ค์นํ๋ ๊ณผ์ ์ ๋ค๋ฃจ์ง ์์๊บผ์์ง ๐
cocoapods ์์ํ๊ธฐ ๐ guides.cocoapods.org/using/getting-started.html
firestore ์์ํ๊ธฐ ๐ firebase.google.com/docs/firestore/quickstart
Firestore Data ๊ตฌ์กฐ
Firestore๋ ์ฐ๋ฆฌ๊ฐ ๋ณดํต ์๊ณ ์๋ DB์ ์ฝ๊ฐ ์ ์ฅ๋๋ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅด๊ฒ ํน์ดํด์.
๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณต๊ฐ์ Collection์ด๋ผ๊ณ ๋ถ๋ฅด๊ณ , Collection ์์๋ Document ๋๋ Sub Collection์ด ๋ค์ด๊ฐ ์ ์์ด์. Documet ์์๋ field, value ํํ๋ก ์ฐ๋ฆฌ๊ฐ ์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ์ ์ฅ๋๊ฒ ๋๋ต๋๋ค!
ํ๋์ Collection์์ Document์ด๋ฆ์ ์ค๋ณต์ ํ์ฉํ์ง ์์ง๋ง, Collection์ด ๋ค๋ฅด๋ฉด Document ์ด๋ฆ์ด ์ค๋ณต๋๋ ์๊ด์์ด์. ์ ์ฅ๋ ์ ์๋ ๋ฐ์ดํฐ ํ์ ์ ์๋์ฒ๋ผ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ฌ๋งํ Type์ ๋ชจ๋ ๊ฐ๋ฅํ๋ต๋๋ค. ์๋ฅผ ๋ค์ด DocumentA์ String ํ์ ์ nickname, Map ํ์ ์ name์ด ์๋ค๊ณ ์๊ฐํด๋ณด๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ๊ตฌ์ฑ๋ ๊ฑฐ์์.
์ ๊น ์์์ ์ธ๊ธํ๋๋ฐ, Document ํ์์ Collection์ด ๋ง๋ค์ด์ง๋ฉด ์ด๊ฑธ Sub Collection์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด DocumentA ์์ Collection X, Y๋ฅผ ๋ง๋ค ์ ์๋ต๋๋ค. ์ด๋ ๊ฒ Collection > Document > Collection ... ์ ๊น์ด๋ 100Depth๊น์ง๋ ๊ฐ๋ฅํ๋ค๊ณ ํฉ๋๋ค! (๊ตณ์ด ์ธ ์ผ์ด ์์์ง๋.. ์ง๊ธ์ผ๋ก์จ๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค์ ๐๐)
Firestore Console์์ ๋ฐ์ดํฐ ํ๋ฒ ๋ฃ์ด๋ณด๊ธฐ!
์์์ ์ด๋ก ์ ์ผ๋ก Collection, Document ๋ฅผ ๊ฐ๋จํ ์ค๋ช ํ๋๋ฐ, ์๋ฌด๋๋ ์ง์ ํด๋ณด๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด๋ณด๋๊ฒ ์ดํด๊ฐ ๋น ๋ฅด๊ฒ ์ฃ !! ์ด๋ ๊ฒ Firestore๋ฅผ ๋ง๋ค๊ณ , Collection๊ณผ Document, Data๋ฅผ ๋ฃ์ด๋ดค์ด์! Collection b > document a > sub collection or data๊ฐ ๋ค์ด๊ฐ์๋ ๊ฒ์ ๋ณผ ์ ์์ฃ ~~? ๐๐ ์ฌ๊ธฐ์ ์ ๊ธฐํ ์ ์, array๋ ๋ฐ์ดํฐ ํ์ ์ด ์์ฌ๋ ์๊ด์๋ต๋๋ค~!
์ด๋ ๊ฒ list๋ผ๋ array๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ์์ string, number, map ํ์ ๋ฐ์ดํฐ๋ ๋ฃ์ด๋ดค์ด์. ์ ๊ธฐํ๊ฒ array ์์ ๋ฐ๋ก array๋ฅผ ๋ฃ๋ ๊ฑด ๋ถ๊ฐ๋ฅํ๋ฐ, map์ ๋ง๋ค๊ณ ๊ทธ ์์ array๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฐ๋ฅํ๋๋ผ๊ตฌ์ ๐์ด๋ ๊ฒ Firestore๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ธ์ ๊ฐ Database๋ ์ค๊ณํ๋ ์๊ฐ์ด ์ฌํ ๋ฐ, ์ฐธ๊ณ ํด๋๋ฉด ์ข์ ๊ฒ ๊ฐ์์~~
์ด๋ฒ ํฌ์คํ ์์๋ ์ค์ ๋ก Firestore๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๊ฐ๋จํ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋์ง ๊ตฌ์กฐ๋ฅผ ํ๋ฒ ์ดํด๋ณด์์ต๋๋ค~!
์ด์ ์ค์ ๋ก XCode์์ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ CRUDํ ์ ์๋์ง ํ๋ฒ ์์๋ณผ๊ฒ์!! ๐๐
๐ 2021/02/10 - [๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ] - [Swift] Cloud Firestore(2) ์ค์ตํด๋ณด๊ธฐ
'iOS [Swift] > ๊ธฐ์ด๋ฅผ ํํํ!' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] CodingKey (0) | 2021.02.26 |
---|---|
[Swift] Cloud Firestore(2) ์ค์ตํด๋ณด๊ธฐ (0) | 2021.02.10 |
[Swift] ScrollView + PageControl (0) | 2021.02.05 |
[Swift] CGRect, CGSize, CGPoint (0) | 2021.02.05 |
[Swift] Storyboard vs Programmatic UI (0) | 2021.02.05 |