[ Swift ] ํ”„๋กœํ† ์ฝœ(protocol)

๐Ÿ”Ž  1 . ํ”„๋กœํ† ์ฝœํ”„๋กœํ† ์ฝœ์€ ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ํŠน์„ฑ์„ ๊ตฌํ˜„ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ์˜ ์ฒญ์‚ฌ์ง„์„ ์ œ๊ณตํ•œ๋‹ค.ํ”„๋กœํ† ์ฝœ์„ ์„ ์–ธํ•  ๋•Œ๋Š” ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์ด ์—†๊ณ  ํ˜•ํƒœ๋งŒ ์ œ๊ณตํ•œ๋‹ค.  ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ ์ด ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๋Š” ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•, extension ๊ฐ์ฒด์—์„œ ๋‹ด๋‹นํ•œ๋‹ค. ํ”„๋กœํ† ์ฝœ์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ ํ•œ๋‹ค.  protocol Drawable { var name: String { get } // ์ฝ๊ธฐ ์ „์šฉ ํ”„๋กœํผํ‹ฐ func draw ()}//ํ”„๋กœํ† ์ฝœ ์ฑ„ํƒclass Circle: Drawable { var name: String { //๊ณ„์‚ฐ ํ”„๋กœํผํ‹ฐ return "Circle" } func draw() { ..

๐ŸŽ iOS/Swift 2024. 8. 25. 08:01

Statements are not allowed at the top level ์˜ค๋ฅ˜

์•ˆ ์ข‹์€ ์Šต๊ด€ ๊ณ ์น˜๊ธฐ. ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด GPT ์จ์„œ ํ•ด๊ฒฐํ•˜์ง€ ์•Š๊ณ  ๋ฌด์Šจ ์˜ค๋ฅ˜์ธ์ง€ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•ด ๋ณ„๊ฑฐ ์•„๋‹ˆ๊ณ  ๊ธฐ์ดˆ์ ์ธ ์˜ค๋ฅ˜๋“ค๋„ ์™œ ์ธ์ง€ ์ •ํ™•ํ•˜๊ฒŒ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„๋ณด๊ณ  ๋ฌด์Šจ ์˜ค๋ฅ˜์˜€๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ.   ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ ํ”„๋กœํ† ์ฝœ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์˜ˆ์‹œ๋ฅผ ์จ๋ณด๋ฉด์„œ ์ถœ๋ ฅ์ด ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ์—๋Ÿฌ๋ฅผ ๋ณด๊ณ  ๋ญ”๊ฐ€ ์ž˜๋ชป ๋œ ์œ„์น˜์— ์“ด ๊ฒƒ ๊ฐ™์€๋ฐ ํด๋ž˜์Šค ์•ˆ์— ์ผ์–ด์•ผ ํ–ˆ๋‚˜? ์‹ถ์—ˆ๋Š”๋ฐ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ชจ๋ฅด๊ฒ ์—ˆ๋‹ค. ๋ฌด์Šจ ์—๋Ÿฌ์ธ์ง€ ํ™•์ธํ•ด๋ณธ ๊ฒฐ๊ณผ, ์ด ์˜ค๋ฅ˜๋Š” ์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ์ค‘ ํ•˜๋‚˜๋กœ, ์ฃผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป๋œ ์œ„์น˜์— ์ž‘์„ฑํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ผ๊ณ  ํ•œ๋‹ค. ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ(top-level)์ธ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ์˜ ์ฝ”๋“œ ๋ธ”๋ก ์™ธ๋ถ€์—์„œ๋Š” ์‹คํ–‰ ๋ฌธ์žฅ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์—†๋‹ค.ํ˜„์žฌ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์ด ์•„๋‹Œ ์™ธ๋ถ€์—์„œ ๋…๋‹จ์ ..

๐ŸŽ iOS/โš ๏ธ Error 2024. 8. 24. 18:50

[ Swift ] ํ”„๋กœํผํ‹ฐ(Property) / NetworkManager์™€ shared

์ธ์Šคํ„ด์Šค ๋˜๋Š” ํƒ€์ž…์˜ ๋ถ€๋ถ„์ธ ์ €์žฅ๋œ ๊ฐ’๊ณผ ๊ณ„์‚ฐ๋œ ๊ฐ’์— ์ ‘๊ทผํ•œ๋‹ค. ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์—์„œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์— ๋Œ€ํ•œ ์ €์žฅ์—ฌ๋ถ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ €์žฅํ”„๋กœํผํ‹ฐ์™€ ๊ณ„์‚ฐํ”„๋กœํผํ‹ฐ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.  - ํ”„๋กœํผํ‹ฐ์˜ ์œ„์น˜: ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€์—, ๋ฉ”์„œ๋“œ์˜ ์™ธ๋ถ€์— ์ •์˜ํ•œ๋‹ค. ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์•„๋‹Œ ์ง€์—ญ๋ณ€์ˆ˜.   1. ์ €์žฅํ”„๋กœํผํ‹ฐ ์ƒ์ˆ˜ ๋ฐ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ •์˜ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ž…๋ ฅ๋œ ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ €์žฅ๋œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• . ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์—์„œ๋Š” ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์—ด๊ฑฐํ˜•์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ.    1-1. ์ง€์—ฐ ์ €์žฅ ํ”„๋กœํผํ‹ฐ(lazy)lazy ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์„ ์–ธ๋งŒ ๋  ๋ฟ ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š๊ณ  ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ ์— ์ดˆ๊ธฐํ™”๋œ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ํ˜ธ์ถœ๋œ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜๋ฉฐ, ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ ํ˜ธ์ถœ ๋  ๋•Œ๋Š” ์ฒ˜์Œ ์ดˆ..

๐ŸŽ iOS/Swift 2024. 8. 24. 10:07

endpoint ์‚ฌ์šฉ

์ด๋ฒˆ ๋‚ ์”จ์—ก ํŒ€ํ”„๋กœ์ ํŠธ์—์„œ OpenWeather API์™€ Kakao API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ,์„œ๋กœ ๋‹ค๋ฅธ ์š”๊ตฌ์‚ฌํ•ญ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ ๋งค๋‹ˆ์ €์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋‹ค. OpenWeather API: ์š”์ฒญ ์‹œ ํ—ค๋” ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š์Œ.Kakao API: ์š”์ฒญ ์‹œ ์ธ์ฆ์„ ์œ„ํ•œ ํ—ค๋”(Header) ์ถ”๊ฐ€ ํ•„์ˆ˜.-> ์œ„์™€ ๊ฐ™์ด ๋‘ API์˜ ์š”์ฒญ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค ๋ณด๋‹ˆ, ํ•˜๋‚˜์˜ fetchData(url: URL) ๋ฉ”์„œ๋“œ๋กœ ๋‘ API๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋‹ค์†Œ ๋ณต์žก.  ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, Endpoint๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค.๊ฐ API์— ๋Œ€ํ•ด ๋ณ„๋„์˜ Endpoint ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ฐ๊ฐ์˜ API์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. Endpoint์˜ ๋‹ค์–‘ํ•œ ์žฅ์ ๋“ค์ด ์žˆ๊ฒ ์ง€๋งŒ, ๊ฐœ์ธ์ ์œผ๋กœ..

๐ŸŽ iOS/Network 2024. 8. 23. 08:31

JSONObject์™€ JSONArray

JSON(JavaScript Object Notation) ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋Ÿ‰ ๋ฐ์ดํ„ฐ ํ˜•์‹์ž…๋‹ˆ๋‹ค. JSON์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ๋‚˜๋‰œ๋‹ค. JSON์€ "key-value"๊ฐ€ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค. key์™€ value ์‚ฌ์ด๋ฅผ : ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌ๋ถ„ํ•˜๋Š” ํ˜•์‹์„ ์ทจํ•œ๋‹ค.key๊ฐ’๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด value๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.๊ฐ Key๋Š” ๊ณ ์œ ํ•œ ๋ฌธ์ž์—ด์ด๊ณ , ์ด์— ๋Œ€์‘ํ•˜๋Š” Value๋Š” ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ฐฐ์—ด, ๊ฐ์ฒด ๋“ฑ ๋‹ค์–‘ํ•œ ํƒ€์ž…์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  JSONObjectJSON Object๋Š” {} ์ค‘๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์ง„ Key-Value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ์ฒด๋‹ค. ๊ฐ Key๋Š” ๊ณ ์œ ํ•œ ๋ฌธ์ž์—ด์ด๊ณ , ์ด์— ๋Œ€์‘ํ•˜๋Š” Value๋Š” ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ฐฐ์—ด, ๊ฐ์ฒด ๋“ฑ ๋‹ค์–‘ํ•œ ..

๐ŸŽ iOS/Network 2024. 8. 20. 14:36