๋ค์ด๊ฐ๊ธฐ ์ ์๋ค์ด๊ฐ๊ธฐ ์์์ ๋จผ์ ๋ฉ์๋์ ํจ์์ ์ฐจ์ด๋ฅผ ์๊ณ ๊ณ์ ๊ฐ์?ํจ์์ ๋ฉ์๋๋ ๋น์ทํด๋ณด์ด์ง๋ง ์ฐจ์ด๊ฐ ์๋ต๋๋ค. ๋ฉ์๋๋ ํน์ ์์
์ ์ํํ๋ ํจ์์ ๋น์ทํ์ง๋ง, ๊ฐ์ฒด ๋ด๋ถ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ํจ์๋ ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ฉฐ, ํน์ ํ์
์ ์ํ์ง ์์ต๋๋ค.๋ฐ๋ฉด์ ๋ฉ์๋๋ ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ ๋ฑ์ ํน์ ํ์
์ ์ํด ์์ผ๋ฉฐ, ํด๋น ํ์
์ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋์ ์ฐจ์ด๋ฅผ ์ดํดํ๋ค๋ฉด, ์ด์ ๋ฉ์๋์ ๋ํด ์์๋ด
์๋ค. Swift์ ๋ฉ์๋Swift๋ ๋ค์๊ณผ ๊ฐ์ ๋ค ๊ฐ์ง ์ฃผ์ ๋ฉ์๋ ์ ํ์ ์ ๊ณตํฉ๋๋ค: ์ธ์คํด์ค ๋ฉ์๋, ํ์
๋ฉ์๋(ํด๋์ค ๋ฉ์๋, ์ ์ ๋ฉ์๋)์
๋๋ค. ๊ฐ๊ฐ์ ํน์ฑ๊ณผ ์ฌ์ฉ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. 1. ์ธ์คํด์ค ๋ฉ์๋ (Instance Meth..
์ฝ๋ฉํ
์คํธ์์ ํ
์คํธ์ผ์ด์ค๋ ๋ค ๋ง์๋๋ฐ ํ๋ ์ผ์ด์ค์์ ๋ค ๋ฐํ์ ์๋ฌ๋ฅผ ๋ด๋ฒ๋ฆฐ ๊ฒฝํ!!!!!์ด ์๋ค.. ํ
์ผ๋ฅผ ์กฐ๊ธ์ด๋ผ๋ ๋งํ์ผ๋๊น,, ์ผ๋จ ๋ค์๋ฌธ์ ๋ก ๋์ด๊ฐ๋ค๊ฐ ๋ค์ ํด๋น ๋ฌธ์ ๋ฅผ ๊ณ ๋ฏผํ๋๋ฐ,10๋ถ๋ ์ฑ ๋จ์ง ์์ ์ํ์ฌ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์ ๊ฐ ์๋๋ง ์๊ฐํ๋ค๊ฐ ์ํ์ด ์ข
๋ฃ๋์๋ค. ํ
์คํธ๊ฐ ๋๋ ํ ์ป์ผ๋ฉด์ ์๊ฐ์ ํ๋๋ฐ, ์๋ฃํ์ ๊ณ ๋ คํ์ง ๋ชปํด์ ์๋ฌ๋ ๊ฒ ๊ฐ๋ค!!!๋ผ๋ ์๊ฐ์ ๊ทธ์ ์์ผ ํ๋ค.ํด๋น ๋ฒ์๊ฐ -10^9 ~ 10^9 ์ด์๋๋ฐ,, ์ฐ์ ํ ๋ ๋ฒ์๋ฅผ ๊ณ ๋ คํ์ด์ผ ์์ ํ์๊ฒ ๋ค๋ ์๊ฐ... Int ์๋ฃํ์ ๋ํด ๋จธ๋ฆฌ์ ๋ฃ์ด๋์ผ ๋ ์ค์๋ฅผ ์ํ ๊ฒ ๊ฐ์์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค ! ๐ฅ ๋ค๋ค ์์๊ฒ ์ง๋ง !Int ๋ค์ ๋ถ์ ์ซ์๋ ๋นํธ๋ฅผ ์๋ฏธํฉ๋๋ค.์ค์ํํธ์์์ Int๋ Int8, Int16, Int32..
1. Reactorkit ์๊ฐReactorkit์ Swift๋ก ์์ฑ๋ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ฃผ๋ก ์ํ ๊ด๋ฆฌ์ ๋ฐ์ดํฐ ํ๋ฆ ์ ์ด๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ iOS ์ฑ ๊ฐ๋ฐ์์ ๋ฆฌ์กํฐ๋ธ ํจํด์ ์ฑํํ์ฌ ์ผ๊ด๋ ์ํ ๊ด๋ฆฌ์ ๋ฐ์ํ UI ์
๋ฐ์ดํธ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.์ด๋ฒ ๊ธ์์๋ Reactorkit์ ๊ธฐ๋ณธ ๊ฐ๋
๊ณผ ์๋ ๋ฐฉ์, ์ด๋ค ์ฅ์ ์ด ์๋์ง ๋ฆฌ๋๋ฏธ๋ฅผ ๋ฒ์ญํด๋ณด๋ฉฐ ์๊ฐํด๋๋ฆฌ๋ ค๊ณ ํฉ๋๋ค. 2. Reactorkit์ ๊ธฐ๋ณธ ๊ฐ๋
Reactorkit์ ์ ์ ReactorKit์ Flux์ Reactive ํ๋ก๊ทธ๋๋ฐ์ ์กฐํฉ์ด๋ผ๊ณ ํฉ๋๋ค. ์ฌ์ฉ์์ก์
๊ณผ ๋ทฐ์ ์ํ๋ ๊ด์ฐฐ ๊ฐ๋ฅํ ์คํธ๋ฆผ์ ํตํด ๊ฐ ๋ ์ด์ด์ ์ ๋ฌ๋ฉ๋๋ค. ์ด ์คํธ๋ฆผ์ ๋จ๋ฐฉํฅ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๋ทฐ๋ ์ก์
๋ง ๋ด๋ณด๋ผ ์ ์๊ณ , ๋ฆฌ์กํฐ..
โ ๏ธ ์๋ฌ Response could not be decoded because of error: The data couldn’t be read because it is missing. Alamofire ํต์ ํ์ฌ ๋ก๊ทธ์ธ์ ํ๋ ๋์ค์ ์๋จ๋ ์๋ฌ๊ฐ ๋จ๊ธฐ ์์ํ๋ค,, ์ฐ๊ฒฐํ API๊ฐ ๋๋ฌด ๋ง์์ ํ๋์ฉ ์ฐ๊ฒฐ๋ถํฐ ์ฐ์ ํ๋๋ผ ์๋ฌ์ฒ๋ฆฌ๋ฅผ ๋ค ํด๋์ง ์์์๋๋ฐ,, ์ค๋๋ง์ ํ๋ก์ ํธ ๊ฐ๋ฐํ๋ ค ํ๋๋ฐ, ์๋ฌ๊ฐ ๋ด๋ค!!!!.. ๋๋ ๊ทธ๋ฌ์ง ๋ชปํ์ง๋ง,, ์คํ, ์ต์
๋ ํ์ธ 5๋ฒ์ฉ ์ฒดํฌํด๋ณด์! "k"๊ฐ ๋๋ฌธ์, ์๋ฌธ์๊ฐ ๋น์ทํ๊ฒ ์๊ฒจ์ ์ฃผ๋ก ๋ฒ์ธ์ด๋ค ๐จ ์ ๋ต์ ์ฐพ์๊ฐ๊ธฐ๊น์ง์ ๊ณผ์ ์ ์ด๋ฌ๋ค. 1. ๋์ฝ๋ฉ์ ๋ชปํ๋ค๋ ์๋ฌ๋๊น ๊ทธ ์ฌ์ด์ ์ํ๋ฒณ ์คํ๊ฐ ์์ด API ์์ ์ ํ์ ๊ฑด์ง ์ค์จ๊ฑฐ๋ฅผ ํ์ธํด๋ดค๋ค > ์๋ฌด๋ฆฌ ๋น๊ตํด๋ ์ฒ ์๋..
์ฌ์ด๋ ํ๋ก์ ํธ ์งํ ์ค ์ด๋ฏธ์ง๋ฅผ ์๋ฒ๋ก ์
๋ก๋ ํด์ผํ๋ ํ์คํฌ๊ฐ ์์๋ค! ๊ธฐ์กด์ ๋ชจ๋ API๋ฅผ Alamofire๋ก ํต์ ํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง ํต์ ์ญ์ Alamofire๋ก ์งํํ๋ค. ๊ตฌํ์ ๋ค ํด๋์๋๋ฐ, ๋ ์ฐพ์๋ณด๋ฉด์ ์ ์ฉํ ๋ด์ฉ์ด ์๋ ์์๋ณด๊ธฐ ์ํด, ๋์ค์ ๋ค์ ๋ณด๊ธฐ ์ํด ๊ธฐ๋กํ๋ ค ํ๋ค. ๐ ๊ณต์ ๋ฌธ์๋ฅผ ๋จผ์ ํ์ธ ๋ณด์! https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#uploading-data-to-a-server ๊ณต์ ๋ฌธ์๋ฅผ ๋จผ์ ํ์ธํด์ ์ฐธ๊ณ ํ ๋งํ ์ฝ๋๋ฅผ ์ดํด๋ณด๊ณ > ๊ตฌ๊ธ๋ง์ผ๋ก ์ ์ ๋ฆฌํด๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ตฌํ > ๋ค์ ๊ณต์๋ฌธ์ ํ์ธ ์์๋ ๊ธฐ๋ฅ ๊ตฌํ๋ณด๋ค ํ์ต์ ๋ ์๊ฐ์ ๋ค์ด๊ณ ์ถ์ด์ ์ด๋ฐ ๋ฐฉ์์ผ๋ก ..
ํ ์ผ์ด ์ฐ๋๋ฏธ์๋...์ด๋ ๋ .. ์คํ๋ฆฐํธ ํ๊ณ ๋ฅผ ํ๋ ๋ ์ด์๋ค.. ํ์์ด ๋งํ๋ค,,"์ ์ฒด ์ง๋ฌธ(Data)์ ํ์ด์ด์คํ ์ด์ ์
๋ฐ์ดํธํ๋๋ฐ, Document Id๊ฐ ๋๋ค๊ฐ์ผ๋ก ๋ค์ด๊ฐ๊ฒ ๋์ด์." ๊ธฐ์กด์๋ ๋ฌธ์ ์์ด๋๊ฐ ๋ํ๋จผํธ ๋ด๋ถ์ ๊ฐ(์ ์)๋ก ๋์ด์์ด์ ์ด๋ฅผ ๋ถ๋ฌ์จ ๋ค Id๋ก ์ ๋ ฌ์ ํด์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋ก์ง์ด ์์๋ค. ๋๋ ์๊ฐํ๋ค,,, "์ฅ ๋ถ๋ช
์ฑ์ ๋์์ํ๋ ๋ถ๋ถ์ด ์์ํ
๋ฐ,," ํ๊ณ ๋ฐ๋ก ์ฑ์ ์ผ์ ํ์ธํด๋ณด๋ "์ถ์ฒ์ง๋ฌธ"๊ธฐ๋ฅ์ด ๋์ํ์ง ์๊ณ , ๋น ํ๋ฉด์ผ๋ก ๋ด๋น๊ฒ์ด์
๋๋ ์ด์,,๋ฅผ ํ์ธํ๋ค. ํ๊ณ , ํ์๊ฐ ๋ชจ๋ ๋๋๊ธฐ ์ , ์ ์ ๊ฐ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ์ํฉ์ด๋ ๋ก์ง์ ์์ ํด ๋น ๋ฅด๊ฒ ๋ฆด๋ฆฌ์ฆ ํ๊ฑฐ๋, ํ์ด์ด์คํ ์ด ๋๋น๋ฅผ ์์ ํด์ ๋น ๋ฅด๊ฒ ํด๊ฒฐํด์ผ ํ ๊ฒ ๊ฐ๋ค๊ณ ์๊ธฐํ๋ค..
ํ์ด์ด๋ฒ ์ด์ค๋ก ๊ตฌ๊ธ ๋ก๊ทธ์์/ํ์ํํด ๋ ์ ์ํ ์ ์ ์์๋ณด์. ๋ก๊ทธ์ธ์ ๊ฒฝ์ฐ๋ ๋ค๋ฅธ ๋ธ๋ก๊ทธ์๋ ์ ๋์์๊ณ , ๊ณต์ ์ฌ์ดํธ๋ ์๋์ด์๊ธฐ ๋๋ฌธ์ ์๋ตํ๋ค-!! ์๋์ ๊ฐ์ด ์์ฑํด์ ํ์ฉํ์๋ฉด ๋ฉ๋๋ค ! ํด๋น ์ฝ๋๋ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ํ์ฉํด์ ๊ตฌ๊ธ/์นด์นด์ค/์ ํ ๋ก๊ทธ์ธ์ ๊ตฌํํ๋ ์์ ์ธ๋ฐ, ๊ตฌ๊ธ์์ ์ฐ์ด๋ ์ฝ๋๋ง ๋จ๊ฒจ๋์๋ค..! import FirebaseAuth import GoogleSignIn final class AuthenticationManager { /// ๋ก์ปฌ Firebase์ ์ ์ฅ๋ ์ ์ ์ ๋ณด๋ฅผ ์ญ์ ํ๊ณ ๋ก๊ทธ์์ func signOut() throws { try Auth.auth().signOut() GIDSignIn.sharedInstance.signOut() } /// disconnect ๋ฉ์..
์ฌ์ด๋ ํ๋ก์ ํธ์์ ๋ฏน์คํจ๋ ํ ํฐ์ด ๋ค์ด๊ฐ์๋๋ฐ, ๊ฐ๋ฐ์ฉ์ด๋ ๋ฐฐํฌ์ฉ ํ ํฐ์ด ๋ฌ๋ผ์ผํ์ง ์๋๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. "๊ทธ๋ผ ๋๋ฒ๊ทธ๋ ๋ฆด๋ฆฌ์ฆ๋ฅผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํด์ฃผ๋ฉด ๋๊ฒ ๋ค" ํ๋ ์๊ฐ์ผ๋ก SwiftCompiler์ ์ ํํ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋๋์ด ์ฐพ์๋ณด๊ฒ ๋์๋ค. ์คํค๋ง๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ฃผ ๊ฐ๋จํ ์์๋ณด์๋ค-! โจ ์ฝ๋์์ DEBUG, RELEASE ๋ถ๊ธฐ ์ฒ๋ฆฌํ๊ธฐ โจ ๋ฐฉ๋ฒ 1. RELEASE ํ๋๊ทธ ์ค์ ํ๊ธฐ 1) ํ๋ก์ ํธ ํ์ผ > TARGETS-ํ๋ก์ ํธ๋ช
> Build Settings > All, Combined ์ค์ 2) ํ๋จ์ผ๋ก ์ญ ๋ด๋ ค๋ณด๋ฉด Swift Compiler - CustomFlags์ ์ด๊ธฐ์๋ Debug ๋ง ์ค์ ๋์ด ์์ ํ
๋ฐ, ํ๋จ Release์ "RELEASE"๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค! 3) ์ฝ..