[iOS/Swift] Test Code๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž - Unit Test

Unit Test๋ž€ unit test๋ž€ ๋ฌด์—‡์„๊นŒ์š”? ์œ„ํ‚ค๋ฐฑ๊ณผ๋ฅผ ํ†ตํ•ด ์ฐพ์•„๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ๋‹› ํ…Œ์ŠคํŠธ(unit test)๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์˜๋„๋œ ๋Œ€๋กœ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ๋‹ค. ์ฆ‰, ๋ชจ๋“  ํ•จ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋งํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ์–ธ์ œ๋ผ๋„ ์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ๋‹จ์‹œ๊ฐ„ ๋‚ด์— ์ด๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋ฐ”๋กœ ์žก์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ด์ƒ์ ์œผ๋กœ, ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ€์งœ ๊ฐ์ฒด(Mock object)๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” (์ผ๋ฐ˜์ ์ธ ํ…Œ์ŠคํŠธ์™€ ๋‹ฌ๋ฆฌ) ๊ฐœ๋ฐœ์ž(developer) ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณด๋‹ค ๋” ์‹ฌ๋„์žˆ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ํ…Œ์Šคํ„ฐ(tester)์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜๊ธฐ๋„ ํ•œ..

iOS/Swift 2023. 10. 15. 17:53
[iOS/Swift] Test Code๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž - TDD๋ž€?

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

iOS/Swift 2023. 10. 11. 00:28
[iOS/Swift] Alamofire ์•Œ์•„๋ณด๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. swift์—์„œ network๋ถ€๋ถ„์„ ๊ณ„์† ๋‹ค๋ฃจ๊ณ  ์žˆ๋Š”๋ฐ ์ด๋ฒˆ์—๋Š” Alamofire๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. alamofire๋Š” urlsession๊ธฐ๋ฐ˜์œผ๋กœ ๋˜์–ด ์žˆ๋Š”๋ฐ urlsession์„ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„์€ ์—ฌ๊ธฐ ๋ฅผ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”!! Alamofire๋ž€? Alamofire is an HTTP networking library written in Swift. ๊ณต์‹๋ฌธ์„œ์—๋Š” "swift๋กœ ์ž‘์„ฑ๋œ http ๋„คํŠธ์›Œํ‚น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ" ๋ผ๊ณ  ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋„คํŠธ์›Œํ‚น ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. alamofire๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋‹ค๋ณด๋‹ˆ ๋งŽ์€ ๊ณณ์—์„œ alamofire๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ง๋งŒํ•˜๋ฉด ์ž…์ด ์•„ํ”„๋‹ˆ ๋ฐ”๋กœ ์‚ฌ์šฉํ•ด๋ณด์ฃ . Ala..

iOS/Swift 2023. 7. 23. 22:32
[iOS/Swift] URLSession ์•Œ์•„๋ณด๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. URLSession์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ ์ ‘ํ•˜์‹œ๋Š” ๋ถ„์ด๋ผ๋ฉด URL Loading System ์„ ๋จผ์ € ์ฝ๊ณ  ์™€์ฃผ์„ธ์š”! ๋ชจ๋“  ๋‚ด์šฉ์€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. URLSession์€ ๋ฌด์—‡์ธ๊ฐ€ URLSession์€ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์• ํ”Œ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ API์ž…๋‹ˆ๋‹ค. ์ž์ฃผ ๋“ค์–ด๋ณด์…จ๋˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Alamofire๋‚˜ Moya๋˜ํ•œ URLSession์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. URLSession์„ ํ†ตํ•ด data๋ฅผ ์—…๋กœ๋“œ ํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์š”! URLSession์„ ๊ฐ„๋‹จํžˆ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด(shared)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ shared๊ฐ์ฒด๋Š” configuration๊ฐ€ ์—†์–ด์„œ ์„ธ๋ถ€์ ์ธ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. configurat..

iOS/Swift 2023. 6. 4. 19:42
[iOS/Swift] URL Loading System ์•Œ์•„๋ณด๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. api ํ˜ธ์ถœ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์งš์–ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ ์‹œ์ž‘์ธ url loading system์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋… URL loading system์€ ํ‘œ์ค€ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์„œ url๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ  ์„œ๋ฒ„์™€ ์†Œํ†ตํ•ฉ๋‹ˆ๋‹ค. - http๋‚˜ ์ปค์Šคํ…€๋œ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ url๋กœ ์‹๋ณ„๋˜๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์—‘์„ธ์Šค๋ฅผ ์ œ๊ณต - ๋น„๋™๊ธฐ๋กœ ์ˆ˜ํ–‰๋˜๊ณ  ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Œ ํ๋ฆ„ - ํŒŒ์ผ์€ ๋‹ค์šด๋กœ๋“œ, ์—…๋กœ๋“œ ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„๋•Œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ URLSessionTask ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•จ - URLSessionTask๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” URLSession์„ ์‚ฌ์šฉํ•ด์•ผํ•จ - ๊ตฌ์กฐ : URLSession > U..

iOS/Swift 2023. 5. 29. 12:33
[iOS/UIKit] Auto Layout - Priority ์‚ฌ์šฉํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค:) ์˜ค๋Š˜์€ priority ์†์„ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ  ์‚ฌ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.. Priority ์‚ฌ์ „ ์ •์˜๋Š” ์šฐ์„ , ์šฐ์„  ํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค! ์ปดํฌ๋„ŒํŠธ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ค„ ๊ธฐ๋Šฅ ๊ฐ™๋„ค์š”! ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•ด ๋ณผ ๊ธฐ๋Šฅ์€ ์„ธ๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. hugging priority, compression resistance priority, constraints priority ์ž…๋‹ˆ๋‹ค! ์ˆœ์„œ๋Œ€๋กœ ์•Œ์•„๋ณผ๊ฒŒ์š”!! Hugging Priority hugging์€ ์•ˆ๊ณ  ์žˆ๋‹ค๋Š” ๋œป์ด์ฃ ? ์ง์—ญํ•˜๋ฉด ์•ˆ๊ณ  ์žˆ๋Š” ์šฐ์„ ์ˆœ์œ„์ธ๋ฐ... ์‹ค์ œ๋Š” ์–ด๋–ค ๊ธฐ๋Šฅ์ผ๊นŒ์š”? ๋ฐ”๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜์–ด๋‚˜์ง€ ์•Š๊ณ  ํฌ๊ธฐ๋ฅผ ์œ ์ง€์‹œํ‚ค๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค! ๋ฌด์Šจ๋ง์ธ์ง€ ์ดํ•ด๋˜์‹œ๋‚˜์š”? ์•ˆ๋˜์…”๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค! ์ค€๋น„ํ•œ ์˜ˆ์ œ๋ฅผ ๋ณธ๋‹ค๋ฉด ๋ฐ”๋กœ ์ดํ•ดํ•˜์‹ค๊ฑฐ์—์š”!ใ…Žใ…Ž UILabel์„ ..

iOS/UIKit 2022. 11. 21. 23:52
[iOS/UIKit] Auto Layout - Multiplier ์‚ฌ์šฉํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š” ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค:) ์˜ค๋Š˜์€ Multiplier ์‚ฌ์šฉ์— ๋Œ€ํ•ด ํ•œ๋ฒˆ ์•Œ์•„๋ณผ๊ฒŒ์š”! Multiplier ์ด๋ฆ„์„ ์‚ฌ์ „์— ๊ฒ€์ƒ‰ํ•ด ๋ณด๋ฉด ์Šน์ˆ˜, ๊ณฑํ•˜๋Š” ์ˆ˜๋ผ๊ณ  ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ multiplier... ์ œ ํฌ์ŠคํŒ…์„ ๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ์–ด๋””์„œ ๋ณด์‹œ์ง€ ์•Š์•˜๋‚˜์š”? ๋ฐ”๋กœ ์ด ๊ทธ๋ฆผ์—์„œ ๋ดค์—ˆ์ฃ !! ๊ธฐ๋ณธ์ ์œผ๋กœ constraint๋ฅผ ์ฃผ๊ฒŒ ๋˜๋ฉด multiplier๋Š” 1.0์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹์œผ๋กœ ๋ดค์„๋•Œ mutiplier๋ฅผ ๋ฐ”๊พธ๊ฒŒ ๋˜๋ฉด ๋น„์œจ๋กœ constraint๊ฐ€ ๋ฐ”๋€Œ๊ฒ ๋‹ค๋Š” ๊ฐ์ด ์˜ค์‹œ์ฃ ? ๋ฐ”๋กœ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!! Multiplier ์‚ฌ์šฉํ•˜๊ธฐ! ๋จผ์ € ์ดˆ๊ธฐ ์„ธํŒ…์€ ํŒŒ๋ž€์ƒ‰ UIView๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ Safe Area Edge์— Constraint๋ฅผ ๋งž์ถฐ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒŒ๋ž€์ƒ‰ UIView leading Constraint์— mult..

iOS/UIKit 2022. 11. 19. 16:16
[iOS/Swift] Generic(์ œ๋„ค๋ฆญ) ๋„ˆ ์ง„์งœ ์ž˜ ์•Œ๊ณ  ์‹ถ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค~~ ์˜ค๋Š˜์€ ์ •๋ง์ •๋ง ์ •๋ฆฌํ•˜๊ณ ์‹ถ์—ˆ๋˜ Generic์— ๋Œ€ํ•ด์„œ ํฌ์ŠคํŒ…์„ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฒŒ์จ ์„ค๋ ˆ๋„ค์š”ใ…Žใ…Ž ๋ฐ”๋กœ ์•Œ์•„๋ณด์‹œ์ฃ ~ Generic์€ ๋ญ˜๊นŒ? ์‚ฌ์ „ ์ •์˜๋ถ€ํ„ฐ ์•Œ์•„๋ณผ๊นŒ์š”?ใ…Žใ…Ž Generic : ํฌ๊ด„์ ์ธ, ํ†ต์นญ์˜ ํฌ๊ด„์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ผ๋Š” ์ด๋ฏธ์ง€๊ตฐ์š”! ๊ณต์‹๋ฌธ์„œ์— ์žˆ๋Š” ์„ค๋ช…์„ ๋ณด๋ฉด - ์ œ๋„ค๋ฆญ์ฝ”๋“œ๋Š” ์ •์˜ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ชจ๋“  ํƒ€์ž…์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•˜๊ณ  ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์™€ ํƒ€์ž…์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. - ์ค‘๋ณต์„ ํ”ผํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ณ  ์ถ”์ƒ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์˜๋„๋ฅผ ํ‘œํ˜„ํ•˜๋Š”์ฝ”๋“œ ๋ผ๊ณ  ์„ค๋ช…์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ „์—์„œ ๋ณธ ํฌ๊ด„์ ์ธ ์˜๋ฏธ๊ฐ€ ๋ชจ๋“  ํƒ€์ž…์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์—์„œ ๋ถ™์—ฌ์ง„ ์ด๋ฆ„์ด๋„ค์š”! ์‚ฌ์‹ค ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” swift ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ ๋Œ€๋ถ€๋ถ„์ด generic์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ์š”...

iOS/Swift 2022. 7. 3. 16:46
[iOS/Swift] Collection Type - Dictionary(๋”•์…”๋„ˆ๋ฆฌ)

Dictionary ์•ˆ๋…•ํ•˜์„ธ์š”? ์˜ค๋Š˜์€ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์—์„œ dictionary์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ• ๊ฑฐ์—์š”! ๋”•์…”๋„ˆ๋ฆฌ๋Š” ์‚ฌ์ „์—์„œ ๋‹จ์–ด๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™์ด ์‹๋ณ„์ž๋ฅผ ๊ธฐ์ค€ ๊ฐ’์œผ๋กœ ์ฐพ์„๋•Œ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ์š”. ๋ฐ”๋กœ ๊ณต์‹๋ฌธ์„œ๋กœ ํ™•์ธํ•ด ๋ณด์‹œ์ฃ ! ํ‚ค-๊ฐ’์„ ์Œ์œผ๋กœ ๊ฐ€์ง€๋Š” ์ปฌ๋ ‰์…˜์ด๋‹ค.. ๋ผ๋„ค์š” ๊ทธ๋ฆฌ๊ณ  key๋Š” hashable์ด๋‹ค. ๊ณ ์œ  ํ•ด์•ผ ํ•˜๋‚˜๋ด์š” ์–ด? ์ €๋ฒˆ์— ์ง‘ํ•ฉ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•  ๋•Œ ๊ฐ’์ด ๊ณ ์œ ํ•˜๊ณ  ์ˆœ์„œ๊ฐ€ ์—†์—ˆ์ž–์•„์š”? ์–˜๋„ ๊ทธ๋Ÿด๊นŒ์š”? ๋งž์Šต๋‹ˆ๋‹ค. ๋”•์…”๋„ˆ๋ฆฌ๋„ ์ˆœ์„œ๊ฐ€ ์—†์–ด์š”! ๊ทธ๋Ÿผ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ํ•œ๋ฒˆ ์„ ์–ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. var emptyDic1: [Int: String] = [:] var emptyDic2 = [Int: String]() var emptyDic3: Dictionary = [Int: String]() var em..

iOS/Swift 2022. 5. 25. 00:01
[iOS/Swift] Collection Type - Set(์ง‘ํ•ฉ)

Set(์ง‘ํ•ฉ) ์˜ค๋Š˜์€ ์ €๋ฒˆ ์‹œ๊ฐ„์— ์ด์–ด Set(์ง‘ํ•ฉ)์— ๋Œ€ํ•ด ํ•œ๋ฒˆ ์•Œ์•„๋ณผ๊ฒŒ์š”! ์ง‘ํ•ฉ์ด๋ผ... ์ง‘ํ•ฉ๋งŽ์ด ๋“ค์–ด๋ณด์…จ์ฃ ? ํ•™๊ต๋‹ค๋‹ ๋•Œ ์ˆ˜ํ•™ ์ˆ˜์—…์—์„œ ๋ฐฐ์šด ์ง‘ํ•ฉ์ด์š”! ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ง‘ํ•ฉ์ด ์žˆ๋Š”๋ฐ, ์ฐจ์ง‘ํ•ฉ ๊ตฌํ•˜๊ณ , ๊ต์ง‘ํ•ฉ ๊ตฌํ•˜๊ณ .. ์ด๋Ÿฐ๊ฒƒ๋“ค! swift์—์„œ๋„ ์ง‘ํ•ฉ์„ ํ†ตํ•ด ์ฐจ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ ๋“ฑ๋“ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์•Œ์•„๋ณผ๊นŒ์š”? ๋ฐ”๋กœ ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์ฃ ! An unordered collection of unique elements. ์ˆœ์„œ๊ฐ€ ์—†๊ณ  ์œ ๋‹ˆํฌํ•œ ์›์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค! ์œ ๋‹ˆํฌํ•˜๋‹ค๋ฉด.. ์ค‘๋ณต๋˜๋Š” ์›์†Œ๊ฐ€ ์—†๋‚˜ ๋ณด๋„ค์š”! ๋„ค ๋งž์Šต๋‹ˆ๋‹ค. ์ง‘ํ•ฉ์—์„œ๋Š” ์ค‘๋ณต๋˜๋Š” ์›์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„์š”. ์ €๋ฒˆ์— ๋ฐฐ์› ๋˜ ๋ฐฐ์—ด์ด๋ž‘์€ ๋‹ค๋ฅด์ฃ ? ๋˜.. ๋ฌธ์„œ๋ฅผ ๊ณ„์† ์‚ดํŽด๋ณด๋ฉด Hashable ์ด๋ผ๋Š” protocol์„ ๋”ฐ๋ผ์•ผ ํ•œ๋‹ค๊ณ  ๋‚˜์˜ค๋„ค์š”! ์ด๊ฒƒ์— ๋Œ€..

iOS/Swift 2022. 5. 24. 00:01
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ