Unit Test๋ unit test๋ ๋ฌด์์๊น์? ์ํค๋ฐฑ๊ณผ๋ฅผ ํตํด ์ฐพ์๋ณด๋ฉด ์ด๋ ๊ฒ ์ค๋ช ํ๊ณ ์์ต๋๋ค. ์ ๋ ํ ์คํธ(unit test)๋ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ์์ค ์ฝ๋์ ํน์ ๋ชจ๋์ด ์๋๋ ๋๋ก ์ ํํ ์๋ํ๋์ง ๊ฒ์ฆํ๋ ์ ์ฐจ๋ค. ์ฆ, ๋ชจ๋ ํจ์์ ๋ฉ์๋์ ๋ํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ์ ์ฐจ๋ฅผ ๋งํ๋ค. ์ด๋ฅผ ํตํด์ ์ธ์ ๋ผ๋ ์ฝ๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ๋จ์๊ฐ ๋ด์ ์ด๋ฅผ ํ์ ํ๊ณ ๋ฐ๋ก ์ก์ ์ ์๋๋ก ํด์ค๋ค. ์ด์์ ์ผ๋ก, ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ์๋ก ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค. ์ด๋ฅผ ์ํด ๊ฐ์ง ๊ฐ์ฒด(Mock object)๋ฅผ ์์ฑํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค. ์ ๋ ํ ์คํธ๋ (์ผ๋ฐ์ ์ธ ํ ์คํธ์ ๋ฌ๋ฆฌ) ๊ฐ๋ฐ์(developer) ๋ฟ๋ง ์๋๋ผ ๋ณด๋ค ๋ ์ฌ๋์๋ ํ ์คํธ๋ฅผ ์ํด ํ ์คํฐ(tester)์ ์ํด ์ํ๋๊ธฐ๋ ํ..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค. ์์ฆ ํ ์คํธ๋ผ๋ ์ฃผ์ ์ ๋น ์ ธ์์ต๋๋ค. ๊ธฐํ์์ ๋ฐ๊ณ ์ฒ์ ๊ฐ๋ฐ์ ํ ๋๋ ๋ชจ๋ ์ผ์ด์ค์ ๋ํด ๊ณ ๋ คํ๋ฉด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ํ์ง๋ง ๊ธํ๊ฒ ์์ ํ๊ฑฐ๋ ์์ ํ์ง ์ค๋๋ ์ฝ๋๋ฅผ ์์ ํ๋ค ๋ณด๋ฉด ์์์น ๋ชปํ๊ฒ ์ฌ์ด๋ ์ดํํธ๊ฐ ๋๊ธฐ ๋ง๋ จ์ ๋๋ค. ์์ฆ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์์ฑํด์ผ ํ ๊น ๊ณ ๋ฏผํ๋ ์ค ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ์ถํ ์์ ํ๋๋ผ๋ ์ด๋ฐ ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ก์๋ด๋ ์ฝ๋๋ฅผ ์์ฑํด๊ฒ ๋ค ์๊ฐ์ด ๋ค์์ต๋๋ค. ๊ทธ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ฐ๋ ค๋ ์๋ Test Code์ ๋ํด ๊ด์ฌ์ด ์๊ฒผ๊ณ TDD์ ๋ํด ๊ณต๋ถํด๋ณด๊ณ ์ ํฉ๋๋ค. TDD(Test - Driven Development) ๋? TDD๋ Test-Driven-Development, ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๋๋ค. ๋งค์ฐ ์งง์ ๊ฐ๋ฐ ์ฌ์ดํด์ ๋ฐ๋ณตํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ค ํ๋..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค. swift์์ network๋ถ๋ถ์ ๊ณ์ ๋ค๋ฃจ๊ณ ์๋๋ฐ ์ด๋ฒ์๋ Alamofire๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค. alamofire๋ urlsession๊ธฐ๋ฐ์ผ๋ก ๋์ด ์๋๋ฐ urlsession์ ๋ชจ๋ฅด์๋ ๋ถ์ ์ฌ๊ธฐ ๋ฅผ ๋ณด๊ณ ์์ฃผ์ธ์!! Alamofire๋? Alamofire is an HTTP networking library written in Swift. ๊ณต์๋ฌธ์์๋ "swift๋ก ์์ฑ๋ http ๋คํธ์ํน ๋ผ์ด๋ธ๋ฌ๋ฆฌ" ๋ผ๊ณ ๋์ด ์์ต๋๋ค. ์ฆ, ๋คํธ์ํน ์์ ์ ์ฝ๊ฒ ์์ ํ ์ ์๋๋ก ๋์์ค๋๋ค. alamofire๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ด ์์ต๋๋ค. ์ด๋ฌํ ํน์ง์ ๊ฐ์ง๊ณ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ณด๋ ๋ง์ ๊ณณ์์ alamofire๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ง๋งํ๋ฉด ์ ์ด ์ํ๋ ๋ฐ๋ก ์ฌ์ฉํด๋ณด์ฃ . Ala..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค. URLSession์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฒ์ ์ ํ์๋ ๋ถ์ด๋ผ๋ฉด URL Loading System ์ ๋จผ์ ์ฝ๊ณ ์์ฃผ์ธ์! ๋ชจ๋ ๋ด์ฉ์ ๊ณต์๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. URLSession์ ๋ฌด์์ธ๊ฐ URLSession์ ๋คํธ์ํฌ ํต์ ์ ํ ์ ์๋๋ก ์ ํ์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ API์ ๋๋ค. ์์ฃผ ๋ค์ด๋ณด์ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Alamofire๋ Moya๋ํ URLSession์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. URLSession์ ํตํด data๋ฅผ ์ ๋ก๋ ํ๊ฑฐ๋ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์์ด์! URLSession์ ๊ฐ๋จํ ์ฌ์ฉํ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค ๊ฐ์ฒด(shared)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง shared๊ฐ์ฒด๋ configuration๊ฐ ์์ด์ ์ธ๋ถ์ ์ธ ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. configurat..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค. api ํธ์ถ ์ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๊ตํ๊ธฐ ์ํด์ ์ฒ์๋ถํฐ ๋ค์ ์ง์ด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋์ ๊ทธ ์์์ธ url loading system์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๊ฐ๋ URL loading system์ ํ์ค ์ธํฐ๋ท ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ url๊ณผ ์ํธ์์ฉํ๊ณ ์๋ฒ์ ์ํตํฉ๋๋ค. - http๋ ์ปค์คํ ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ url๋ก ์๋ณ๋๋ ๋ฆฌ์์ค์ ๋ํ ์์ธ์ค๋ฅผ ์ ๊ณต - ๋น๋๊ธฐ๋ก ์ํ๋๊ณ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ ์ค๋ฅ๊ฐ ๋ค์ด์ค๋ฉด ์ฒ๋ฆฌ ํ ์ ์์ ํ๋ฆ - ํ์ผ์ ๋ค์ด๋ก๋, ์ ๋ก๋ ํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์๋๋ ํ๋ ์ด์์ URLSessionTask ์ธ์คํด์ค๋ฅผ ์์ฑํด์ผํจ - URLSessionTask๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ URLSession์ ์ฌ์ฉํด์ผํจ - ๊ตฌ์กฐ : URLSession > U..
์๋ ํ์ธ์ ๋๊ตฌ๋ฆฌ์ ๋๋ค:) ์ค๋์ priority ์์ฑ์ ๋ํด ์์๋ณด๊ณ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค.. Priority ์ฌ์ ์ ์๋ ์ฐ์ , ์ฐ์ ํ ๊ฒ ์ ๋๋ค! ์ปดํฌ๋ํธ์ ์ฐ์ ์์๋ฅผ ์ค ๊ธฐ๋ฅ ๊ฐ๋ค์! ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํด ๋ณผ ๊ธฐ๋ฅ์ ์ธ๊ฐ์ง ์ ๋๋ค. hugging priority, compression resistance priority, constraints priority ์ ๋๋ค! ์์๋๋ก ์์๋ณผ๊ฒ์!! Hugging Priority hugging์ ์๊ณ ์๋ค๋ ๋ป์ด์ฃ ? ์ง์ญํ๋ฉด ์๊ณ ์๋ ์ฐ์ ์์์ธ๋ฐ... ์ค์ ๋ ์ด๋ค ๊ธฐ๋ฅ์ผ๊น์? ๋ฐ๋ก ์ปดํฌ๋ํธ์ ์ฌ์ด์ฆ๋ฅผ ๋์ด๋์ง ์๊ณ ํฌ๊ธฐ๋ฅผ ์ ์ง์ํค๋ ์ฐ์ ์์๋ฅผ ๋งํฉ๋๋ค! ๋ฌด์จ๋ง์ธ์ง ์ดํด๋์๋์? ์๋์ ๋ ์๊ด์์ต๋๋ค! ์ค๋นํ ์์ ๋ฅผ ๋ณธ๋ค๋ฉด ๋ฐ๋ก ์ดํดํ์ค๊ฑฐ์์!ใ ใ UILabel์ ..
์๋ ํ์ธ์ ๋๊ตฌ๋ฆฌ์ ๋๋ค:) ์ค๋์ Multiplier ์ฌ์ฉ์ ๋ํด ํ๋ฒ ์์๋ณผ๊ฒ์! Multiplier ์ด๋ฆ์ ์ฌ์ ์ ๊ฒ์ํด ๋ณด๋ฉด ์น์, ๊ณฑํ๋ ์๋ผ๊ณ ๋์ด ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ multiplier... ์ ํฌ์คํ ์ ๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด ์ด๋์ ๋ณด์์ง ์์๋์? ๋ฐ๋ก ์ด ๊ทธ๋ฆผ์์ ๋ดค์์ฃ !! ๊ธฐ๋ณธ์ ์ผ๋ก constraint๋ฅผ ์ฃผ๊ฒ ๋๋ฉด multiplier๋ 1.0์ผ๋ก ์ค์ ๋์ด ์์ต๋๋ค. ์์ผ๋ก ๋ดค์๋ mutiplier๋ฅผ ๋ฐ๊พธ๊ฒ ๋๋ฉด ๋น์จ๋ก constraint๊ฐ ๋ฐ๋๊ฒ ๋ค๋ ๊ฐ์ด ์ค์์ฃ ? ๋ฐ๋ก ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค!! Multiplier ์ฌ์ฉํ๊ธฐ! ๋จผ์ ์ด๊ธฐ ์ธํ ์ ํ๋์ UIView๋ฅผ ์ถ๊ฐํ ํ Safe Area Edge์ Constraint๋ฅผ ๋ง์ถฐ๋๊ฒ ์ต๋๋ค. ํ๋์ UIView leading Constraint์ mult..
์๋ ํ์ธ์? ๋๊ตฌ๋ฆฌ์ ๋๋ค~~ ์ค๋์ ์ ๋ง์ ๋ง ์ ๋ฆฌํ๊ณ ์ถ์๋ Generic์ ๋ํด์ ํฌ์คํ ์ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋ฒ์จ ์ค๋ ๋ค์ใ ใ ๋ฐ๋ก ์์๋ณด์์ฃ ~ Generic์ ๋ญ๊น? ์ฌ์ ์ ์๋ถํฐ ์์๋ณผ๊น์?ใ ใ Generic : ํฌ๊ด์ ์ธ, ํต์นญ์ ํฌ๊ด์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ผ๋ ์ด๋ฏธ์ง๊ตฐ์! ๊ณต์๋ฌธ์์ ์๋ ์ค๋ช ์ ๋ณด๋ฉด - ์ ๋ค๋ฆญ์ฝ๋๋ ์ ์ํ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ชจ๋ ํ์ ์์ ๋์ํ ์ ์๋ ์ ์ฐํ๊ณ ์ฌ์ฌ์ฉ๊ฐ๋ฅํ ํจ์์ ํ์ ์ ์์ฑํ ์ ์๋ค. - ์ค๋ณต์ ํผํ๊ณ ๋ช ํํ๊ณ ์ถ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์๋๋ฅผ ํํํ๋์ฝ๋ ๋ผ๊ณ ์ค๋ช ์ด ๋์ด ์์ต๋๋ค. ์ฌ์ ์์ ๋ณธ ํฌ๊ด์ ์ธ ์๋ฏธ๊ฐ ๋ชจ๋ ํ์ ์์ ๋์ํ ์ ์๋ค๋ ์๋ฏธ์์ ๋ถ์ฌ์ง ์ด๋ฆ์ด๋ค์! ์ฌ์ค ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ swift ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฅ ๋๋ถ๋ถ์ด generic์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ์...
Dictionary ์๋ ํ์ธ์? ์ค๋์ ์ปฌ๋ ์ ํ์ ์์ dictionary์ ๋ํด ์์๋ณด๋๋ก ํ ๊ฑฐ์์! ๋์ ๋๋ฆฌ๋ ์ฌ์ ์์ ๋จ์ด๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ด ์๋ณ์๋ฅผ ๊ธฐ์ค ๊ฐ์ผ๋ก ์ฐพ์๋ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ์. ๋ฐ๋ก ๊ณต์๋ฌธ์๋ก ํ์ธํด ๋ณด์์ฃ ! ํค-๊ฐ์ ์์ผ๋ก ๊ฐ์ง๋ ์ปฌ๋ ์ ์ด๋ค.. ๋ผ๋ค์ ๊ทธ๋ฆฌ๊ณ key๋ hashable์ด๋ค. ๊ณ ์ ํด์ผ ํ๋๋ด์ ์ด? ์ ๋ฒ์ ์งํฉ์ ๋ํด์ ๊ณต๋ถํ ๋ ๊ฐ์ด ๊ณ ์ ํ๊ณ ์์๊ฐ ์์์์์? ์๋ ๊ทธ๋ด๊น์? ๋ง์ต๋๋ค. ๋์ ๋๋ฆฌ๋ ์์๊ฐ ์์ด์! ๊ทธ๋ผ ๋์ ๋๋ฆฌ๋ฅผ ํ๋ฒ ์ ์ธํด ๋ณด๊ฒ ์ต๋๋ค. var emptyDic1: [Int: String] = [:] var emptyDic2 = [Int: String]() var emptyDic3: Dictionary = [Int: String]() var em..
Set(์งํฉ) ์ค๋์ ์ ๋ฒ ์๊ฐ์ ์ด์ด Set(์งํฉ)์ ๋ํด ํ๋ฒ ์์๋ณผ๊ฒ์! ์งํฉ์ด๋ผ... ์งํฉ๋ง์ด ๋ค์ด๋ณด์ จ์ฃ ? ํ๊ต๋ค๋ ๋ ์ํ ์์ ์์ ๋ฐฐ์ด ์งํฉ์ด์! ์๋ฅผ ๋ค๋ฉด ์งํฉ์ด ์๋๋ฐ, ์ฐจ์งํฉ ๊ตฌํ๊ณ , ๊ต์งํฉ ๊ตฌํ๊ณ .. ์ด๋ฐ๊ฒ๋ค! swift์์๋ ์งํฉ์ ํตํด ์ฐจ์งํฉ, ๊ต์งํฉ ๋ฑ๋ฑ์ ๊ตฌํํ ์ ์์ต๋๋ค. ๊ทธ๋ผ ์์๋ณผ๊น์? ๋ฐ๋ก ๊ณต์๋ฌธ์๋ฅผ ํตํด ์์๋ณด์ฃ ! An unordered collection of unique elements. ์์๊ฐ ์๊ณ ์ ๋ํฌํ ์์๋ฅผ ๊ฐ์ง๋ค! ์ ๋ํฌํ๋ค๋ฉด.. ์ค๋ณต๋๋ ์์๊ฐ ์๋ ๋ณด๋ค์! ๋ค ๋ง์ต๋๋ค. ์งํฉ์์๋ ์ค๋ณต๋๋ ์์๋ฅผ ํ์ฉํ์ง ์์์. ์ ๋ฒ์ ๋ฐฐ์ ๋ ๋ฐฐ์ด์ด๋์ ๋ค๋ฅด์ฃ ? ๋.. ๋ฌธ์๋ฅผ ๊ณ์ ์ดํด๋ณด๋ฉด Hashable ์ด๋ผ๋ protocol์ ๋ฐ๋ผ์ผ ํ๋ค๊ณ ๋์ค๋ค์! ์ด๊ฒ์ ๋..
- Total
- Today
- Yesterday
- ๊ณต๋ถ
- swift ํ๋กํ ์ฝ
- Clean
- Unit Test
- Protocol
- network
- XCTest
- ios
- ํ ์คํธ
- swift ๊ณต๋ถ
- swift urlsession
- swift
- test
- observable
- RX
- ์คํ ๋ ์ด์์
- Swift Network
- set
- RxSwift
- func
- autolayout
- Subscribe
- ์ค์ํํธ ๊ณต๋ถ
- ํ๋กํผํฐ
- ์ค์ํํธ map
- ํ๋กํ ์ฝ
- ์ค์ํํธ ํ๋กํ ์ฝ
- ์ค์ํํธ
- URLSession
- Property
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |