iOS - ๊ฐ•์ œ ์–ธ๋ž˜ํ•‘์— ๋Œ€ํ•œ ๊ณ ์ฐฐ(with map)

2022. 12. 3. 17:30ใ†ios

iOS - ๊ฐ•์ œ ์–ธ๋ž˜ํ•‘์— ๋Œ€ํ•œ ๊ณ ์ฐฐ(with map)

 

 

 ๊ฐ•์ œ ์–ธ๋ž˜ํ•‘์€ ๋ฌด์—‡์ด๊ณ , ์–ธ์ œ ์จ์•ผํ• ๊นŒ?

 

์Šค์œ„ํ”„ํŠธ๋Š” Optional์ด๋ผ๋Š” ํƒ€์ž…์ด ์žˆ๋‹ค.

์ด๋Š” ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒ€์ž…์ธ nil๊ณผ ์–ด๋– ํ•œ ๊ฐ’์ด ํˆฌ๋ช…ํ•œ ๋ง‰๊ณผ๊ฐ™์ด wrapping๋˜์–ด์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” some(Type) ๋‘ ๊ฐ€์ง€๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. 

 

๋ณดํ†ต Optional์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ถˆํ™•์‹คํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

์ฆ‰ User๋ผ๋Š” ๋น„๋™๊ธฐ Struct๊ฐ’์„ ๊ฐ€์งˆ ๋•Œ Optional<User>๋กœ ํ•œ๋ฒˆ ๋ฌถ์Œ์œผ๋กœ์จ ์ด User๋ผ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด if let ๋ฐ”์ธ๋”ฉ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๊ฑฐ์ณ ๊บผ๋‚ด์•ผ ํ•œ๋‹ค. 

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์•Œ์•„๋ณผ ๊ฒƒ์€ ์•ˆ์ „ํ•˜๊ฒŒ ๊บผ๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ ๋ถˆ์™„์ „ํ•˜๊ฒŒ ๊บผ๋‚ด๋Š” ๋ฐฉ์‹(๊ฐ•์ œ ์–ธ๋ž˜ํ•‘)์ด๋‹ค.

 

๋ถˆ์™„์ „ํ•˜๋‹ค๊ณ  ๊ผญ ์•ˆ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋ฉฐ, ๊ฐœ๋ฐœ์ž์˜ ํŒ๋‹จํ•˜์— ๊ฐ•์ œ๋กœ ๊บผ๋‚ด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ํ™•์‹คํ•˜๊ฒŒ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐ๋œ๋‹ค๋ฉด ๊ฐ•์ œ์–ธ๋ž˜ํ•‘์„ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. 

 

๋ฌธ๋“ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ Optional์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

Rxswift๋ฅผ ์ ์šฉํ–ˆ์ง€๋งŒ ์ด๋ฅผ ๋…ผ์™ธ๋กœํ•˜๊ณ  lottoObservable์ด Lottos๋ผ๋Š” Structํƒ€์ž…์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

์ด Lotto์—๋Š” date๋ผ๋Š” Stringํ˜•ํƒœ์˜ property๊ฐ€ ์กด์žฌํ•˜๊ณ  ์ด date๋ฅผ formatter๋ฅผ ํ†ตํ•ด์„œ ์‹ค์ œ Dateํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜์‹œํ‚ค๊ณ  ์‹ถ์€ ์ƒํƒœ์ด๋‹ค.

 

์—ฌ๊ธฐ์„œ formatter.date(from: $0.date)!๋ฅผ ๋ณด๋ฉด ๊ฐ•์ œ์–ธ๋ž˜ํ•‘์„ ํ†ตํ•ด์„œ ๋ถˆ์™„์ „ํ•œ ์ƒํƒœ๋กœ ๊ฐ’์„ ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ƒ๊ฐํ•  ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. $0.date๋ผ๋Š” ๊ฐ’์ด Stringํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

2. $0.date๋ผ๋Š” ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. 

3. $0.date์˜ ๊ฐ’์ด String์ด์ง€๋งŒ formatter์˜ ํ˜•์‹์ด ์•„๋‹ˆ๋ผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

 

1๋ฒˆ๊ณผ 3๋ฒˆ์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๋•Œ ํƒ€์ž…์„ ์ž˜ ์„ ์–ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฃผ์ž…ํ•˜๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  2๋ฒˆ์˜ ๊ฒฝ์šฐ์—๋Š” Lottos๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์„๋•Œ $0.date๊ฐ’๋„ ๋น„์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒŒ ์•„๋‹Œ๊ฐ€? ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋Š”๋ฐ,  ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ์•„์˜ˆ map๋‚ด๋ถ€์˜ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋˜์ง€์•Š์•˜๋‹ค. 

์ฆ‰ ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์„๋•Œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•์ œ์–ธ๋ž˜ํ•‘์„ ์‚ฌ์šฉํ•ด๋„๋˜๊ณ , ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ์ง€์•Š์„๋•Œ๋Š” $0.date๊ฐ’์ด ์‚ฌ์ „์— ์„ค๊ณ„๋œ ํƒ€์ž…๊ณผ ํ˜•์‹์ด ๋™์ผํ•˜๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์œ„์˜ ์ฝ”๋“œ๋Š” ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. 

 

์ด ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ๋Š” ์•„๋‹ ์ˆ˜ ์žˆ์ง€๋งŒ ๋Š์ž„์—†์ด ์ด์œ ์žˆ๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด์•ผํ•œ๋‹ค.