[Firebase] Firestore โ‘  NoSQL Database๋ž€

2021/01/19 - [Firebase] Firestore โ‘  NoSQL Database๋ž€ 2021/01/20 - [Firebase] Firestore โ‘ก Firestore์˜ ๊ตฌ์กฐ Cloud Firestore๋Š” NoSQL database์ž…๋‹ˆ๋‹ค. (NoSQL์ด ๋ฌด์—‡์ธ์ง€ ์•„์‹œ๋Š” ๋ถ„์€ ์˜์ƒ์˜ 10๋ถ„๋Œ€๋กœ ๋„˜์–ด๊ฐ€์‹œ๊ฑฐ๋‚˜ ๋‹ค์Œ ๊ธ€๋กœ ๋„˜์–ด๊ฐ€์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค~) ๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ธ€์€ NoSQL์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Firebase์˜ ๊ณต์‹ ์œ ํŠœ๋ธŒ์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜์ƒ์„ ๋ฒˆ์—ญํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ง„ํ–‰ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค! ์ปคํ”ผ ํ•œ ์ž”์€ ์™€๋ฐฉ ํฐ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค? ๊น”๊น”>< ํ˜น์‹œ๋‚˜ ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ ์‹œ ๋Œ“๊ธ€๋กœ ๊ผญ ๋ง์”€ํ•ด์ฃผ์„ธ์š”! ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ๊ด€๊ณ„ํ˜• DB๋Š” ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ์ฃ ? ๊ฐ ํ…Œ์ด๋ธ”์˜ ํ–‰(row)์€ ์ •ํ•ด์ง„ ๊ทœ์น™์„ ๋”ฐ๋ผ ์ฑ„์›Œ๋‚˜๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ..

[iOS] SceneDelegate & AppDelegate์˜ ์—ญํ• 

* ํ•ด๋‹น ๊ธ€์—๋Š” ๊ฐœ์ธ ๊ฒฌํ•ด๊ฐ€ ๋“ค์–ด๊ฐ€์žˆ์œผ๋ฏ€๋กœ ์ด๊ณณ์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์กฐ๊ธˆ ๋” ๊น”๋”ํ•œ ์„ค๋ช…์„ ๋ณด์‹ค์ˆ˜๋„(?) ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์€ SceneDelegate๊ณผ AppDelegate์˜ ์—ญํ• ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ณต์‹๋ฌธ์„œ์™€ DW ๋ธ”๋กœ๊ทธ ๋ฐ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๊ธ€์ด๋ผ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ ์‹œ ๋Œ“๊ธ€๋กœ ๊ผญ ๋ง์”€ํ•ด์ฃผ์„ธ์š”! ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ์ œ๊ฐ€ ์•ฝ 5๊ฐœ์›” ์ „์— ์ฒ˜์Œ iOS๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ–ˆ์„ ๋• XCode ๋ฒ„์ „๋„ 11 ์ด์ƒ์ด์—ˆ๊ณ  ๋‹น์‹œ ๋ณดํŽธ์ ์ด์—ˆ๋˜ iOS ๋ฒ„์ „๋„ 13์ด์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์ œ๊ฐ€ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ๋„ Create New Project๋ฅผ ํ•˜๋ฉด AppDelegate.swift์™€ SceneDelegate์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ AppDelegate์ด App Life-Cycle๋„ ๊ด€๋ฆฌํ•˜๋˜ ํ˜ธ๋žญ์ด ๋‹ด๋ฐฐํ”ผ๋˜ ์‹œ์ ˆ(์ด..

iOS 2021. 1. 16. 19:47
[iOS] URLSession์„ ์ด์šฉํ•ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ JSON ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ

์ด ๊ธ€์€ URLSession์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ํŠน์ • Request ์ข…๋ฅ˜(GET, POST, DELETE ๋“ฑ)์— ์ข…์†๋˜์ง€ ์•Š์€ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„์„ ํ•ด ๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด Enocdeํ•˜๋Š” ๊ณผ์ • ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ Decode๋ฅผ ํ•˜๋Š” ๊ณผ์ •์ด ๋ฐฐ์ œ๋˜์–ด ์žˆ์„ํ…๋ฐ ์™œ ๋ฐฐ์ œ ์‹œ์ผฐ๋Š”์ง€๋Š” ์ž‘์„ฑํ•˜๋ฉฐ ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ‰์ƒ์‹œ ์งœ๋˜ ์ฝ”๋“œ๋“ค์„ ์ •๋ฆฌํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ์‹œ ๋Œ“๊ธ€๋กœ ๊ผญ ๋ง์”€ํ•ด์ฃผ์„ธ์š”! ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? URLSession URLSession ์ด ํ•œ ์ฃผ์ œ๋กœ๋„ ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ์–ด์„œ ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ€์ง€๋Š” ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœ๋ฅผ ํ•ด๋ณด๋ฉด URLSession๊ณผ ๊ด€๋ จ ๋œ ํด๋ž˜์Šค๋“ค์€ ํŠน์ • URL์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋ฐ›๊ฑฐ๋‚˜,..

iOS 2021. 1. 6. 02:14
๋ถ€์ŠคํŠธ์บ ํ”„ — ๋ฉค๋ฒ„์‹ญ ํ•™์Šต์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ 

๋ธ”๋กœ๊ทธ ์œ ์ž… ํ†ต๊ณ„๋ฅผ ๋ณด๋‹ˆ ๋งŽ์€ ๋ถ„๋“ค์ด NAVER ์ปค๋„ฅํŠธ์žฌ๋‹จ์—์„œ ์ง„ํ–‰๋œ ๋ถ€์ŠคํŠธ์บ ํ”„์— ๊ด€์‹ฌ์„ ์ฃผ์‹œ๊ณ  ๊ณ„์‹œ๋”๋ผ๊ตฌ์š”! ๋ฉค๋ฒ„์‹ญ ์ž…๊ณผ ํ›„ ํ•™์Šต์Šคํ”„๋ฆฐํŠธ ๊ธฐ๊ฐ„์ด ๋๋‚˜๊ณ  ๋ฏธ๋””์—„์ด๋ผ๋Š” ํ”Œ๋žซํผ์— ๊ธ€์„ ์จ ๋†“์•˜๋Š”๋ฐ ๋” ๋งŽ์€ ๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•˜๋Š” ๋งˆ์Œ์— ๋งํฌ ๋‚จ๊ฒจ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” ๋ถ€์ŠคํŠธ์บ ํ”„ ๊ต์œก ๊ธฐ๊ด€์ด ๋๋‚œ ์ƒํ™ฉ์ด๋ผ ์กฐ๋งŒ๊ฐ„ ๋ถ€์ŠคํŠธ์บ ํ”„ ํ›„๊ธฐ๋„ ์“ธ ์˜ˆ์ •์ด๋‹ˆ ๋งŽ์ด ์‚ฌ๋ž‘ํ•ด์ฃผ์‹ญ์‚ฌ... ์‹ธ๋ฐ”์‹ธ๋ฐ”~ใ…‹ใ…‹ sueaty.medium.com/๋ถ€์ŠคํŠธ์บ ํ”„-๋ฉค๋ฒ„์‹ญ-ํ•™์Šต-์Šคํ”„๋ฆฐํŠธ-ํšŒ๊ณ -12f1ff4ef546 ๋ถ€์ŠคํŠธ์บ ํ”„ — ๋ฉค๋ฒ„์‹ญ ํ•™์Šต ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ  ๋ฉค๋ฒ„์‹ญ ์Šคํ”„๋ฆฐํŠธ ๋งˆ์ง€๋ง‰ ๋งˆ์Šคํ„ฐํด๋ž˜์Šค๊ฐ€ ๋๋‚˜๊ณ  ์—ฌ๋Š ๋•Œ์™€ ๊ฐ™์ด ์ฑ„ํŒ… ์ฐฝ์—๋Š” ‘์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค’์™€ ‘๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค’๊ฐ€ ์˜ฌ๋ผ์™”์ง€๋งŒ ์—ฌ๋Š ๋•Œ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์คŒ ์ฐฝ์„ ๋‚˜๊ฐ€๋Š” ์ธ์›์ด ์ ์—ˆ๋‹ค. ํ‰์†Œ์—๋Š” sueaty.med..

SUEATY/๊ธฐ๋ก 2020. 12. 30. 18:21
[์กธ์—…์ž‘ํ’ˆ] Flask์™€ iOS ๊ด€๊ณ„ ๊ฐœ์„ (?)ใ…‹ใ…‹

๋‚ด๊ฐ€ ๋ˆˆ ์•ž์— ์ฒ˜๋ฆฌํ–ˆ์–ด์•ผ ํ•˜๋Š” ์ผ : [ ์›น - flask - iOS ] ์ด๋ ‡๊ฒŒ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ ๋งŒ๋“ค๊ธฐ. ์ง€๋‚œ ๊ธ€์„ ์ผ์„ ๋•Œ๋Š” ์›น-flask๋งŒ ์—ฐ๊ฒฐ ๋œ ์ƒํƒœ์˜€๊ณ  iOS ํ”„๋กœ์ ํŠธ์™€๋Š” ์—ฐ๊ฒฐํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์ŠคํŠธ๋ ˆ์Šค๊ฐ€ ์Œ“์—ฌ ์žˆ์—ˆ๊ณ  ํ•˜๊ธฐ ์‹ซ์–ด ์ž๊พธ๋งŒ ๋ฏธ๋ค˜๋‹ค. ์–ธ์ œ๊นŒ์ง€๋‚˜ ๋ฏธ๋ฃฐ ์ˆœ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ž˜ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค. ๋„ˆ๋ฌด ๋Š˜์–ด์กŒ๋˜ ๊ฒƒ์ผ๊นŒ? iOS๊ฐ€ ํž˜๋“ค๋ฉด ๊ทธ๋ƒฅ ์›น์œผ๋กœ ํ•˜์ž๋Š” ์˜๊ฒฌ์ด ๋‚˜์™”๋‹ค. iOS๊ฐ€ ๋˜์—ˆ๋˜ ์›น์ด ๋˜์—ˆ๋˜ ๋งก๊ฒŒ ๋  ์—ญํ• ์ด ๋ฐ์ดํ„ฐ ๋ถ„์„์˜ ๊ฒฐ๊ณผ๋ฅผ ํ”Œ๋กฏ์œผ๋กœ ๊ทธ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ ์ „์ฒด์—์„œ ํฐ ๋น„์ค‘์„ ์ฐจ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์–ธ์ œ๋“ ์ง€ ๋Œ€์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์ด๋‹ค. iOS๋ฅผ ํ•˜๊ฒ ๋‹ค๊ณ  ๋งํ•œ ๋‚ด ์ž…์žฅ์ด ๊ณค๋ž€ํ•ด์กŒ๋‹ค. ์•„๋‹ˆ์ง€, iOS๋ฅผ ํ•˜๊ฒ ๋‹ค๊ณ  ๋งํ•œ ๋‚ด ์ž…์žฅ์ด ๊ณค๋ž€ํ•ด์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ญ”๊ฐ€ 'ํŒจ๋ฐฐ์ž'๊ฐ€ ๋œ ๊ธฐ๋ถ„..

[Swift 5.0] ์Šค์œ„ํ”„ํŠธ์˜ ๊ธฐ๋ณธ

Types Swift๋Š” ์ž๋ฃŒํ˜•์€ ์—ฌํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค ์ฒ˜๋Ÿผ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒํ˜•๊ณผ collection type์„ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ ๋ฐ–์—๋„ Objective-C์—์„œ๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ python์„ ๋‹ค๋ค„๋ดค๋‹ค๋ฉด ์•„๋Š” tuple๊ณผ Swift์˜ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ธ optional์ด ์žˆ๋‹ค. Swift์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒํ˜•์—๋Š” ์ •์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Int, ์‹ค์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ Double / Float, ๋…ผ๋ฆฌ ์ž๋ฃŒํ˜• Bool๊ณผ text data๋ฅผ ์œ„ํ•œ String์ด ์žˆ๋‹ค. Collection type์—๋Š” Array, Set, Dictionary๊ฐ€ ์žˆ๊ณ  ์ง์ „์— ์–ธ๊ธ‰ํ•œ tuple์€ ํ•จ์ˆ˜์—์„œ ์—ฌ๋Ÿฌ ๊ฐ’์„ returnํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ์ž๋ฃŒํ˜•์ธ optional type์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’์˜ ์œ ๋ฌด๋ฅผ ํ‘œํ˜„ํ•  ..