[Swift] ์๋ชป๋ JSON ๊ตฌ์กฐ ํ์ฑ ํด๋ณด๊ธฐ
๐ ์์ ์๊ฐ์ API ๋คํธ์ํน ๊ตฌ์กฐ ์ค์ต์ ํ๋ฉด์ ๋ฐ๊ฒฌํ ํธ๋ฌ๋ธ์ด๋ค!!
๋ฌธ์
์ฒ์์๋ ์ด์ํ๋ค๊ณ ๋๋ผ์ง ๋ชปํ๋ค... ์๋ํ๋ฉด ๊ธฐ๊ด์์ ๋ถ๋ฌ์ค๋ API์ด๊ณ ์ฝ๋ ์์์ ์๋ชป๋์๋ค๊ณ ํ๋จํ์๋ค.
์์ธ
์ด์ํจ์ ๋๊ปด ๊ณ์ ๋ซ์ด์ ธ๋ผ ๋ณด๋ ๋ด๊ฐ ์ฑ๊ณตํ ๋ด์ค API ์๋ต JSON ๊ตฌ์กฐ๊ฐ ๋ค๋ฅธ ๊ฒ์ ์์์ฐจ๋ฆด ์ ์์๋ค.๐ค
ํด๊ฒฐ๋ฐฉ๋ฒ
์ด๋ป๊ฒ ๋นผ๋ผ์ง 1์๊ฐ ์ ๋ ๊ณ ๋ฏผํ๊ณ ์๋ํด ๋ณด๋ค๊ฐ ๊ฐ์ฌ๋๊ป ์ง๋ฌธ์ ํ๋ค.
๊ฐ์ฌ๋์ ๋ต๋ณ ์ญ์ JSON ๊ตฌ์กฐ๊ฐ ์๋ชป๋์๊ณ 2๋ฒ ์ค์ key ๊ฐ์ด ์์ด ์ด๊ฒ์ ์ฒ๋ฆฌํ๊ธฐ์๋ ์ฝ๋๊ฐ ๋๋ฌ์์ง๊ณ ํ๋ค๋ค๊ณ ์กฐ์ธ์ ํด์ฃผ์
จ๋ค.
๋จผ ๊ธธ์ ๋์๊ฐ์ผ ํ๋ค! ๐ค
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ํด๊ฒฐ์ ์ ํํธ๋ฅผ ๋์ ธ ์ฃผ์
จ๋ค.
์ฒ์ ๋ [ ]๋ง ์ ๊ฑฐํ๋ฉด ์ํ๋ ์ค์ต์ด ๊ฐ๋ฅํ๋ค๊ณ ๋ง์ํด ์ฃผ์ จ๋ค.
์๋ชป๋ API ์ค์ต์ ํ์๋ค๊ณผ ๊ฐ์ด ํ์ด ํ๋ก๊ทธ๋๋ฐ์ ํ๊ณ ์์ด ์ด๋ป๊ฒ [ ] ์ ๊ฑฐํ ์ง ์์ด๋์ด๋ฅผ ๋ด๋ฉด์ ์ฝ๋ฉ์ ํ๋ค.
๋ฐ์์จ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ณ๊ฒฝ ํ
removeFirst() , removeLast()์ ์ด์ฉํ์ฌ [ ]์ ์ ๊ฑฐํ๋ค.
์ฌ๊ธฐ์ ๋งํ ๋ถ๋ถ์ ์ง๊ธ์ ๋ฌธ์์ด์ด์ด์ ์ด๋ป๊ฒ ํ๋ฉด ๋ค์ data ํ์์ผ๋ก ๋ฐ๊พธ๊ณ decode ํ๋ ์์
์ ํ์ง?๋ผ๋ ๋ฒฝ์ ๊ฐ๋ก๋งํ๋ค.
๋ด๊ฐ ์ ์ํ ๋ฌธ์์ด ๊ฐ์ decode ๋ฐ๋์ธ encode๋ฅผ ํ ํ retrurn ํ๊ธฐ ์ํด decode๋ฅผ ํด๋ณด์๊ณ ํ๋ค.
์ค๋ ์์
๋ง๋ฌด๋ฆฌ ์๊ฐ์ด ๋ค๊ฐ์ ์ด๋ป๊ฒ ํด๋ณผ์ง ์๋ก ์ด์ผ๊ธฐ๋ง ํด๋ณด๊ณ ๋ง๋ฌด๋ฆฌ๋ฅผ ์ํด ์ด ์์
์ ์ฐ์ ์์๋ฅผ ๋ค๋ก ๋ฏธ๋ฃจ์๋ค.
์์
์ด ๋๋ ํ ํผ์์ ์ฌ๋ฌ ๊ฐ์ง ์๋๋ฅผ ํด๋ดค๋ค.
ํจ์ ์ฒ์ ์คํ ์ชฝ ๋ถ๋ถ, ๋ทฐ๊ฐ ๋ก๋๋๋ ์ชฝ, ๊ฐ์ด ์ ๋ฌ๋๋ ์ชฝ ๋ฑ๋ฑ
์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ๋์๊ฐ๋์ง ํ์ธํ๊ธฐ ์ํด print ๋ฌธ์ ์ฐ์ผ๋ฉด์ ์คํ ์์๋ฅผ ํ์ธํด ๋ณด๊ณ ์์๋ค.
๊ณ์ ํฐ๋ฏธ๋ ์ฐฝ์ ๊ฐ์ด ์ ๋จ์ ๋ฌด์์ด ๋ฌธ์ ์ธ์ง ํท๊ฐ๋ ธ๋ค. ์ด๋ ์ ๋ ์ฝ์งํ ๊ฒฐ๊ณผ ๋ด๊ฐ ์ณ๋ค๋ณด๊ณ ์์๋ ์ฐฝ์ ํฐ๋ฏธ๋์ด ์๋ ๋ค๋ฅธ ์ฐฝ์ด์๋ค…. ์….??? ๐ก
๊นจ๋ซ๊ณ ๋ค์ ์ด์ฌํ print๋ฌธ์ ํ์ธํ๋ฉด์ ์ด๋ ๋ถ๋ถ์ด ๋ฌธ์ ์ธ์ง ํ์ ํ๋ค.
let food ์ชฝ ๋ถ๋ถ์ด ๋ฌธ์ ์๋ค.
data! ํ๋ฉด ๊ฐ์ด ๋์ค๋๋ฐ decode ์ชฝ ๋ถ๋ถ์ด ๋ฌธ์ ์๋ค.
๊ทธ๋์ ์ต์
๋ ์ฒ๋ฆฌ๊ฐ ๋์ด์์ด์ ๊ทธ๋ฐ๊ฐ ํ๊ณ ๋ฐ์ธ๋ฉ์ ํ๋ ค๊ณ ํ์ง๋ง
if let , guard ๋ฌธ์ ์ฌ์ฉํด์ ๋ฐ์ธ๋ฉ์ ํ์ด์ฃผ๋ฉด if ๋ฌธ์์์๋ง ์ด์์๋ ์กฐ๊ฑด ๋ณ์์ด๊ธฐ ๋๋ฌธ์ if ๋ช
๋ น์ด ๋๋๊ณ ๋ ๋ค์ ์ต์
๋? ์ฒ๋ฆฌ๊ฐ ๋์ด let food ์ชฝ ๋ถ๋ถ์ from: data๋ก ๊ฐ์ ๋๊ฒจ์ฃผ์ง ๋ชปํ๋ค. -> โป ์ ์ ๋ํผ์
์
๋๋ค..ใ
๊ทธ๋์ ์ด๋ป๊ฒ ํ์ง ๋ ์ฝ์ง์ ์์ํ๋ค ์ด๋ ๊ฒ ํด๋ณด๊ณ ์ ๋ ๊ฒ ํด๋ณด๊ณ ์ ๋ต์ด ๋์ฌ ๊ฑฐ ๊ฐ์ง ์์
๊ตฌ๊ธ์ ๊ทธ๋ฅ ์๊ฐ๋ฌ๋ ๋จ์ด์ธ swift decode nil ์ด๋ ๊ฒ ์น๊ณ ์ฒ์ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๊ณ ํ๋ค..!
๊ฒ์์ ์๋ฃ๋ฅผ ์ฅ์ฅ ๋ณด๋ค๊ฐ ๋์ ๋์๋ jsonString ์ชฝ์ด ํฌ์ฐฉ๋์๋ค.
์ด ์ด๊ฑฐ ์ต์ํ ๋ง์ธ๋ฐ? ๐ฒ
Optional("{\"resultList\":[{\"contentSeq\":16,\"areaName\":\"์ถ์ฒ์\",\"partName\"
:\"์์๋ฃ\",\"title\":\"์ฌ๋๋334\",\"address\":\"๊ฐ์๋ ์ถ์ฒ์ ์์๋ก 2949-13\",\"latitu
de\":\"37.9152543465461\",\"longitude\":\"127.720272370027\",\"tel\":\"010-9973-3
836\"},{\"contentSeq\":20,\"areaName\":\"์ถ์ฒ์\",\"partName\":\"์์๋ฃ\",\"title\":
\"์ด๋ฐ๊ทธ๋ฆฐ\",\"address\":\"๊ฐ์๋ ์ถ์ฒ์ ์๋ฉด ๋ฐ์ฌ๋ก 732\",\"latitude\":\"37.8843707666682
\",\"longitude\":\"127.683178984882\",\"tel\
๋น๊ณ ใ
ใ
ใ
ํ์๋ค์ด๋ ๊ฐ์ด ํด๋ณด๊ณ print ๋ฌธ ์ฐ์ dataToString์ด๋ผ๊ณ [ ]๋ง ์ ๊ฑฐํ๋ ๊ทธ๊ฑฐ์๋ค.
์ค ๋น์ทํ๋ค ๋ ๊ทธ๋ฆฌ๊ณ ์๋์ decode๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ฐ ๋ฌธ์์ด์ ๋ฃ์ด์คฌ๋น?
๋๊ฐ์ด ์ ์ด๋ดค๋ค. ๊ทธ๋ฆฌ๊ณ ๋ช ๊ฐ์ ์ต์
๋? ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๊ณ ์คํํ๋๋ ๋งค์ฐ ๋งค์ฐ ์ ๋์๋ค. ํด๊ฒฐ ์๋ฃ!
๊ทธ๋์ ์ต์ข ์ฝ๋์ด๋ค..!
๋๋ ์
์ด์ ์์ ๊ฑฐ๋ฆฌ์ธ ๊ณต๋ถํด์ผ ํ ๊ฒ์..๐ฅ
1. ์์ ์๋ ๋ธ๋ก๊ทธ ๋ด์ฉ ๋ค์ ์ดํดํด ๋ณด๊ธฐ
2. swift ์๋ฌ ์ํฉ ๋ถ๊ธฐ ์ฒ๋ฆฌํ๊ธฐ ๊ณต๋ถ
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ด ๋คํ์ด์๋ค. ์ข์ ์๋์๋ ๊ฑฐ ๊ฐ๋ค..!
ํด๊ฒฐํ ์ ์๋๋ก ๋ธ๋ก๊ทธ ๊ธ ์ฌ๋ ค์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!!
์๋์ ์ฃผ์๋ ์ค์ตํ ๊นํ๋ธ ์ฃผ์์ ๋๋ค ๐๐
https://github.com/APPSCHOOL1-REPO/fetchDataDemo-20221123_lab09