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๊ฐ์ด ์ฌ์ ์ ์ค๊ณ๋ ํ์ ๊ณผ ํ์์ด ๋์ผํ๋ค๋ฉด ๋ฌธ์ ๊ฐ๋์ง ์๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ์์ ์ฝ๋๋ ์์ ํ ์ฝ๋๋ผ๊ณ ์๊ฐํ๋ค.
์ด ์ฝ๋๊ฐ ์ข์ ์ฝ๋๋ ์๋ ์ ์์ง๋ง ๋์์์ด ์ด์ ์๋ ์ฝ๋์ ๋ํด์ ์๊ฐํด์ผํ๋ค.
'ios' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
iOS - xib๋ฅผ ์ด์ฉํด์ Custom View ๋ง๋ค๊ธฐ (0) | 2022.10.10 |
---|---|
Swift - ๋ฌธ์์ด ์ธ๋ฑ์ค (1) | 2022.10.04 |
Swift - components, split (1) | 2022.09.30 |
Swift - zip (0) | 2022.09.30 |
Swift - ์์ด๊ณผ ์กฐํฉ ๊ตฌํํ๊ธฐ (0) | 2022.09.29 |