ํ๋ก์ ํธ ๐ ๏ธ/iOS
๊ณ ๋ฏผ๊ณ ๋ฏผ ... ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ์งฑํฌ๋ค .. ์งฑํฌ๋๊น ๋ญ๊ฐ ์งฑ๋ง๋ค..๐ซ ์ข์์๊ธฐ๋ฅ, ์ ์ฅ๊ธฐ๋ฅ, ํ๋ก์๊ธฐ๋ฅ, ๊ฒ์๋ฌผ ์ฌ๋ฆฌ๊ธฐ, ์์ ํ๊ธฐ … ์ด ๋ง์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๋ฉด ํ์์ ์ผ๋ก update ๋ฉ์๋๊ฐ ํ์ํ๋ค. ์๋ฅผ ๋ค์ด, ์ ์ ๊ฐ ์ข์์๋ฅผ ๋๋ ์๋ ์ ์ ๊ฐ ์ข์์๋ฅผ ๋๋ฅธ ๊ฒ์๋ฌผ ๋ฆฌ์คํธ์ ๋ฐฉ๊ธ ์ข์์๋ฅผ ๋๋ฅธ ๊ฒ์๋ฌผ๋ ์
๋ฐ์ดํธ (append) ํด์ฃผ์ด์ผ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ์ ์ ๋ณด์์ ์ข์์ ์
๋ฐ์ดํธ, ์ ์ฅ ์
๋ฐ์ดํธ ๊ฐ๊ฐ์ ๋ฉ์๋๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ผํ ๊น? ์ฝ๊ฐ updateUserLikeMagazine , updateUserBookmarkedMagazine … ์ด๋ ๊ฒ ์ด๋ป๊ฒ ํด์ผ ๋ด๊ฐ ๋ฉ์๋๋ฅผ ๋ง๋ค์์๋ ํ์๋ค์ด ์ฝ๊ฒ ๋ทฐ๋จ์์ ์์๋ฑ ์ฌ์ฉํ ์ ์์์ง ๊ณ ๋ฏผํด๋ณด์๋ค. ๐ค ๋ด๊ฐ ์๊ฐํ ๋ฐฉ์์ ์ด๋ฌํ๋ค. var likedMagaz..
ํ๋ก์ ํธ ๐ ๏ธ/ํธ๋ฌ๋ธ ์ํ
๋ฌธ์ ์ํฉ ํ๋ก์ฐ ํ๋ก์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋์๋ค. ์ ๋ฒ๊ณผ ๊ฐ์ ๊ตฌ๋
ํ๊ธฐ๊ฐ ๋ฐ์์ด ์๋๋ ์ด์์ด๋ค. ํ์ง๋ง ์ํฉ์ด ์กฐ๊ธ ๋ค๋ฅด๋ค..! ์ ๋ฒ ์ด์์ ์์ธ์ onAppear์ onDisappear์ ์๋ชป๋ ํธ์ถ ์์๋ก ๊ตฌ๋
ํ๊ธฐ ๋ฒํผ์ ๋๋ ์๋, ๋ทฐ๋ฅผ ๋๊ฐ๋ค ๋ค์ด์ค๋ฉด ๋ฐ์์ด ๋์ง ์์๋ ๊ฒ์ด์๋๋ฐ ์ด๋ฒ์๋ ๋น์ทํ ์ํฉ์ด์ง๋ง ์กฐ๊ธ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ค. ์ด๋ฒ ์ด์์ ์์ธ์ ForEach ์๋ค. ๋ฌธ์ ๋ ์๋์ง๋ง ,, ๋ฌธ์ ๊ฐ ๋๋ ์ฝ๋๋ฅผ ํ๋ฒ ๋ณด๋ฉด // 1๋ฒ ์ฝ๋ ForEach(0..
ํ๋ก์ ํธ ๐ ๏ธ/ํธ๋ฌ๋ธ ์ํ
๋ฌธ์ ์ํฉ ํ๋ก์ ํธ๋ฅผ ํ๋ ์์ค ํ๋ก์ฐ ํ๋ก์ ๊ธฐ๋ฅ์ ๋ฃ๋ ๊ณผ์ ์์ ์ด์๊ฐ ๋ฐ์ํ๋ค ๐จ ์ด๋ค ์ด์๋๋ฉด!!?? ์ค๋ช
์์ ๋ฉ๊ฑฐ์ง๋ํ
์ผ๋ทฐ๋ฅผ “1๋ฒ ๋ทฐ”, ์ ์ ํ๋กํ๋ทฐ๋ฅผ “2๋ฒ ๋ทฐ”๋ก ํ๊ฒ ์ต๋๋ค. 1๋ฒ๋ทฐ → 2๋ฒ๋ทฐ๋ก ๊ฐ๋ ๋ค๋น๊ฒ์ด์
๋ทฐ ๊ณ์ธต์์ 1๋ฒ๋ทฐ์์ 2๋ฒ๋ทฐ๋ก ๋ค์ด๊ฐ ๊ตฌ๋
ํ๊ธฐ ๋ฒํผ์ ๋๋ฅธํ์ ๋ค๋ก๊ฐ๋ค๊ฐ ๋ค์ 2๋ฒ๋ทฐ๋ก ๋ค์ด๊ฐ๋ฉด ๋ด๊ฐ ํด๋น ์ฌ์ฉ์๋ฅผ ๊ตฌ๋
ํ๊ณ , ๊ทธ ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธ๋ฅผ ์์ผ์ค์๊ธฐ ๋๋ฌธ์ “๊ตฌ๋
์ค” ๋ฒํผ์ด ๋์์ผํ๊ณ , ๊ตฌ๋
์์๋ 1๋ช
์ด ๋ ์์ด์ผํ๋ค. ์ด๋ ๊ฒ ..! ๊ทผ๋ฐ ๋ฌธ์ ๋ 2๋ฒ๋ทฐ์์ ์
๋ฐ์ดํธํ์ 1๋ฒ๋ทฐ๋ก ๋ค๋ก๊ฐ๊ธฐ ํ ๋ค์ 2๋ฒ๋ทฐ๋ก ๋ค์ด๊ฐ์๋ ๋ฐ์์ด ์๋๋ ์ด์๊ฐ ๋ฐ์ํ๋ค…! ์ผ๋จ ๊ตฌ๋
ํ๊ธฐ ๋ก์ง์ ๋ํด ์ค๋ช
ํ์๋ฉด, ๊ตฌ๋
ํ๊ธฐ ๋ฒํผ์ ๋๋ฅธ๋ค. ๊ตฌ๋
์ ๋๋ฅด๊ณ , 2๋ฒ๋ทฐ์์ 1๋ฒ๋ทฐ๋ก ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅผ๋, o..
ํ๋ก์ ํธ ๐ ๏ธ/ํธ๋ฌ๋ธ ์ํ
๋ฌธ์ ์ํฉ Combine ์ผ๋ก ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํจ. ๋น๋๊ธฐ ์ฝ๋๋ก ๋ทฐ๋ชจ๋ธ์ ์๋ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ ๊ทธ ๋ฐฐ์ด์ ์ถ๋ ฅ์ ํด๋ณด๋ ๋น๋ฐฐ์ด์ด ์ถ๋ ฅ๋๋ ์ํฉ ํ๋ทฐ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์์
์ ํ๋ฉด์ onAppear ๋ด์์ communityVM.fetchCommunity ๋ผ๋ ์ปค๋ฎค๋ํฐ ๊ฒ์๋ฌผ์ ๊ฐ์ ธ์ค๋ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์คํํ๊ณ communityVM.communities (๊ฐ์ ธ์จ ์ปค๋ฎค๋ํฐ ๊ฒ์๋ฌผ๋ค) ๋ฅผ ์ถ๋ ฅํด๋ณด๋ .onAppear { print("onAppear ์์") communityVM.fetchCommunity() print(communityVM.communities) // [] ์ถ๋ ฅ } ๊ฒฐ๊ณผ๋ ? “ [ ] “ ๋น๋ฐฐ์ด์ ์ถ๋ ฅํ๋ค. ์๊ฐํด๋ณด๋ฉด ๋๋ ๋น์ฐํ ๊ฒฐ๊ณผ์๋ค. ^^ ์์ธ fu..
ํ๋ก์ ํธ ๐ ๏ธ/iOS
Router ๊ฐ ๋ญํ๋ ์น๊ตฌ? ์ด๋ฒ์๋ Router ๊ฐ ๋ญํ๋ ์น๊ตฌ์ธ์ง ์์๋ณด๊ฒ์์ ๐ ์ด Router ๋ ๋คํธ์ํฌ ์์ฒญ์ ์ค๋ํฌ์ธํธ, ๋ฉ์๋, ํ๋ผ๋ฏธํฐ ๋ฑ์ ์ ์ํด์ URLRequest ๋ก ๋ณํํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ผ ์ URLRequest ๊ฐ ํ์ํ ๊น์ ? ์ฐ๋ฆฌ๊ฐ ์๋ฒ์ ํต์ ์ ํ๊ธฐ ์ํด์ , ์ฐ๋ฆฌ๊ฐ ์ง๋๋ฒ์ ์ฌ์ฉํ .dataTaskPublisher(for: request) ์ ํ์ํ url ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด์ฃผ๊ธฐ ์ํจ์
๋๋ค. ์ฐ๋ฆฌ๊ฐ ํ๋ก์ ํธ์์ ํ์ํ ๋ค์ํ ๋คํธ์ํฌ ์์ฒญ๋ค์ด ์์ํ
๋ฐ, user ์ ๊ด๋ จ๋ ๋คํธ์ํฌ ์์ฒญ๋ง ๋ด๋ ์ ์ ์ ๋ณด ๋ถ๋ฌ์ค๊ธฐ, ํ์ฌ ๋ก๊ทธ์ธ๋ ์ ์ ์ ๋ณด ๋ถ๋ฌ์ค๊ธฐ, ์ต์ด ๋ก๊ทธ์ธ์ ํ์๊ฐ์
ํ ์ ์ ์ ๋ณด ์ ์ฅํ๊ธฐ, ์ ์ ์ ๋ณด ๋ณ๊ฒฝํ๊ธฐ ๋ฑ… ์ด๋ ๊ฒ ๋ค์ํ ์์ฒญ๋ค์ด ์์๊ฒ๋๋ค.! ์ด ๋ชจ๋ ์์ฒญ..
ํ๋ก์ ํธ ๐ ๏ธ/iOS
์ฐ๋ฆฌ๊ฐ Firebase Firestore RestAPI ๋ฅผ ์ฌ์ฉํ๋ฉด์, ๊ธฐ์กด์ ์ฌ์ฉํ๋ SDK ๋ฅผ ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ๋ค์ ์๋ก ๊ตฌํํด์ผํ๋ค. ๋จผ์ ์ฐ๋ฆฌ๋ Firestore๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ค๊ณ , Firestore ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด URLSession ์ ์ฌ์ฉํด์ ๋คํธ์ํฌ ์์
์ ์ฒ๋ฆฌํ๋ค. ๋คํธ์ํฌ ์์
์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ค์ํ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฐฉ์์ค Combine์ ์ฑํํ์ฌ Combine ๊ณผ URLSession ์ด ๋ ์กฐํฉ์ ์ฌ์ฉํด๋ณด๊ธฐ๋ก ํ๋ค. ๋จผ์ ํฐ ๊ตฌ์กฐ๋ก ํ๋ฒ ์๊ฐํด๋ณด๋ฉด, ๐ค URL ์ ๋ํ ๋ฐ์ดํฐ ์์
์ ์ํ Publisher ์ Publisher ๋ฅผ ๊ตฌ๋
ํด์ Publisher์์ ๋ฐ์ํ๋ ๊ฐ์ ์ฒ๋ฆฌํ Subscriber ๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋์ ์ด๋ป๊ฒ ๋คํธ์ํฌ ๋ ์ด์ด๋ฅผ ๊ตฌํํ ๊ฒ์ด๋ ! ๐ค ์ ..
ํ๋ก์ ํธ ๐ ๏ธ/ํธ๋ฌ๋ธ ์ํ
๋ฌธ์ ์ํฉ Firestore SDK ๋ฅผ ๋ฒ๋ฆฌ๊ณ RestAPI ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๊ฒ์ ์ฑ๊ณตํ๋ค. ๊ทธ๋ฐ๋ฐ, ๋๋ฏธ ๋ฐ์ดํฐ๊ฐ ์์ฌ๊ฐ๋๊น ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฐ. ์ด๋ค ๋ฌธ์ ์๋๋ฉด, ๋ฐ์ดํฐ๊ฐ 20๊ฐ ์ด์ ํ๋ฒ์ ๋ถ๋ฌ์์ง์ง ์์๋ค. ์ด๊ฒ ๋ฌด์จ,,,,? ์ผ์ ์ด๊ฒ ๋ชจ๊ผฌ ํ๊ณ get ์์ฒญ์ ๋ณด๋ด๋ณด์๋ค. ๋จผ์ ๋ชจ๋ ์ ์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๋ ์์ฒญ์ ๋ณด๋ด๋ณด์๋ค. ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก๋ ์์ฒญ๋๊ฒ ๊ธด json ๋ฐ์ดํฐ๋ค๊ณผ ํจ๊ป ๋งจ ๋ง์ง๋ง์ “nextPageToken” ์ ๋ณด๋ด์ฃผ์๋ค. ์์ธ ๊ทธ๋์ ์ด์๋ฏธ ๊ตฌ๊ธ๋งํด๋ณธ ๊ฒฐ๊ณผ firebase RESTAPI ๋ฅผ ์ฌ์ฉํ ๋ 20๊ฐ๊ฐ ๋์ด๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ๋๋ get ์์ฒญ URL ์ ํ๋ผ๋ฏธํฐ์ nextPageToken์ ํจ๊ป ๋๊ฒจ์ฃผ๋ฉด ๋๋ค๊ณ ํ๋ค. ๊ทธ๋ฐ๋ฐ get ์์ฒญ์ ๋ณด๋ผ๋๋ง๋ค n..
์นดํ
๊ณ ๋ฆฌ ์์
๋ฌธ์ ์ํฉ Grain ํ๋ก์ ํธ๋ ์๋ฒ๊ฐ๋ฐ์ ์์ด iOS ๊ฐ๋ฐ์๋ก๋ง ์ด๋ฃจ์ด์ง ํ์ด๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ Firebase ์ฌ์ฉ์ด ๋ถ๊ฐํผํ๊ณ , ์ฐ๋ฆฌ์ฑ์ ์ ์ ๋ฌด๊ฑฐ์์ ธ ๊ฐ๋ค. Swift Pachage Manager๋ก Firebase SDK ๋ฅผ ์ฑ์ ์ถ๊ฐ ํด์ Firebase ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์๋ค. ๊ทผ๋ฐ SDK๋ฅผ ์ถ๊ฐํ๊ณ ๋๋ ์ธํ
๋งฅ ์ ์ ์๋ ๋๋ ์ง์ง ,,, ์ฅ๋์์ผ๋ก ๋น๋ ํ๋ฒ ์์ผ๋๊ณ ์์ฌํ๊ณ ์๋ ๋ผ ,,, ๋ผ๊ณ ๋งํ ์ ๋๋ก ๊ทธ๋งํผ ๋น๋ ์๋๊ฐ ๋๋ฌด ๋๋ ธ๋ค. ์ฝ๋๋ฅผ ์น๋ฉด ๋ฐ๋ก ๋ฐ๋ก ๋๋ฒ๊ทธ๋ ๋์ง ์์๋ค… ใ
ํํ RestAPI ๋์
๊ธฐ ์์ฌ์ด์๊ฐ ์ฐ๋ฌผ์ ํ๋ค,,๐ฅฒ SDK ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ๋ง๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด์๊ณ , Firebase SDK ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ RestAPI ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋๊ฒ์ ์๊ฒ ๋์๋ค. ..