Hash๋? ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌ, ์ ์งํ๋ ์๋ฃ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ค์ ํด์ ํจ์๋ฅผ ํตํด key๋ก ๋ถ๋ฅํ๊ณ , ๊ทธ key์ ๋ฐ๋ผ value๋ฅผ ์ ์ฅํ๋ ํํ๋ฅผ ๋ปํ๋ค. HashTable์ด๋ Key๋ฅผ ์ด์ฉํด ๋ฐฐ์ด์ Index๋ฅผ ์ฐพ๊ณ , ๊ทธ ์ธ๋ฑ์ค๋ฅผ ํตํด ๊ฐ์ ๊ฐ์ ธ์จ๋ค. "์ ๋ฆฌ"์ ์์ด ์ด๋ฆ์ ์ฐพ๊ธฐ ์ํด 1. "์ ๋ฆฌ"๋ผ๋ key๋ฅผ hash ํจ์์ ์ ๋ฌํ๋ค 2. hash ํจ์ ๋ด์ hashํจ์๋ฅผ ํตํด ์ฐพ์ value์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋๋ค. 3. ์ฐพ์ ์ธ๋ฑ์ค๋ฅผ ํตํด value๊ฐ "jarry"๋ฅผ ์ป๋๋ค. Hashable์ด๋? https://developer.apple.com/documentation/swift/hashable Hashable | Apple Developer Documentation A type that can be h..
iOS/Swift
์ด๊ธฐํ ์ธ์คํด์ค๋ฅผ ์์ฑํด์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น๋ฐ๋ ๊ฒ. ๋ชจ๋ ์ ์ฅ ์์ฑ๋ค์ ์ด๊ธฐํ๊ฐ ๋์ด์ผ ์ธ์คํด์ค ์ฌ์ฉ์ด ๊ฐ๋ฅ (์ด๊ธฐ๊ฐ์ด ์ง์ ๋์ด ์์ด์ผ ํจ) ํด๋์ค ๊ตฌ์กฐ์ฒด ์ง์ ์ด๊ธฐ๊ฐ ๋ฃ๊ธฐ O O ์์ฑ์ ์ฌ์ฉ O O ๋ฉค๋ฒ์์ด์ฆ ์ด๋์
๋ผ์ด์ X O Convenience init ์ถ๊ฐ์ ์ธ ์์
์ ํ ์ ์๋๋ก ํด์ฃผ๋ ๋ณด์กฐ ์ด๋์
๋ผ์ด์ ์๊ธฐ ๋จ๊ณ์ ์๋ ์ง์ ์์ฑ์ ๋๋ ์๊ธฐ ๋จ๊ณ์ ์๋ ๋ค๋ฅธ ํธ์ ์์ฑ์ ํธ์ถ ๊ฐ๋ฅ ์ง์ ์์ฑ์๋ ์์ ์ง์ ์์ฑ์๋ฅผ ํธ์ถํด์ผํจ ํด๋์ค์๋ง ํด๋นํ๋ ๊ธฐ๋ฅ (์์๊ณผ ๊ด๋ จ) ์ง์ ์์ฑ์๋ณด๋ค ์ ์ ๊ฐฏ์์ ํ๋ผ๋ฏธํฐ๋ก ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ์์ฑํ๊ธฐ ์ํ ์๋ธ(Sub)๊ฐ๋
์ ์์ฑ์ ํธ์ ์์ฑ์๋ ์ง์ ์์ฑ์์ ์์กด ๋ฐ ํธ์ถ(์ง์ ์์ฑ์๊ฐ ์ ์ฅ ์์ฑ ์ด๊ธฐํ) ์ด๊ธฐํ ๊ณผ์ ์ ๊ฐํธํ๊ฒ ์ ๊ณตํ๊ธฐ ์ํจ ์ค์ง์ ์ผ๋ก ๊ฐ๋ฅํ ..
๊ธฐ์ด๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๋ค์ง๋ฉด์ ํ์
์ฃผ์๊ณผ ํ์
์ถ๋ก ์ ๊ฐ๋
์ ์ ํ๊ฒ ๋์๋ค. ํ์
์ถ๋ก ์ ๊ธฐ์กด์ ์๊ณ ์์์ง๋ง ํ์
์ฃผ์์ด๋ผ๋ ๋จ์ด๋ ์ด๋ฒ์ ์ฒ์ ์ ํ๊ฒ ๋์์ผ๋ ์ด๋ฏธ ์๊ณ ์๋ ๊ฐ๋
์ด๊ธด ํ๋ค. ๋ ๊ฐ๋
์ ๋ชจ๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ๋๋ ๊ฐ๋
์ด๋ค. 1. ํ์
์ฃผ์(Type Annotation) var name: String var name: String = "Lily" ํ์
์ฃผ์์ ๋ณ์๋ฅผ ์ ์ธํ ๋ ๋ณ์์ ์๋ฃํ๊น์ง ํจ๊ป ๋ช
์ํด์ฃผ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฒซ๋ฒ์งธ ์ค ์ฒ๋ผ name์ด๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด์ String์ด๋ผ๋ ์๋ฃํ๊น์ง ํจ๊ป ์ง์ ํด์ค๋ค. ๋๋ฒ์งธ ์ค ์ฒ๋ผ ์ ์ธ๊ณผ ๋์์ ๊ฐ์ ์ง์ ํด์ค ์ ์๋ค. 2. ํ์
์ถ๋ก (Type Inference) var name = "Lily" ํ์
์ฃผ์๊ณผ ๋ฌ๋ฆฌ ๋ณ์๋ฅผ ์ ์ธํ ..
๋ค์ด์ด๋ฆฌ ์ฑ์ ๋ง๋ค๋ฉด์ ๊ธฐ์กด์ ํ์ด์ด ๋ฒ ์ด์ค๋ฅผ ํตํด ์ ์ฅํ๋ ค๊ณ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ ์ธ์ํค๋ฉด์ ๊ตณ์ด..? ๋ผ๋ ์๊ฐ์ด ๋ค์ด ์ด์ฐจํผ ๋ก๊ทธ์ธ์ด ํ์ ์์ผ๋๊น ๊ทธ๋ฅ ์ฑ ๋ด์ ์ ์ฅํด๋ ๋๊ฒ ๋ค! ์ถ์ด์ ์ ์ ๋ดค์๋ CoreData๋ฅผ ์ฌ์ฉํด๋ณด๊ฒ ๋์๋ค! (์คํ๋ ค ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ์ฐ๋ฉด ์ธํฐ๋ท๋ ๋์ผํ๋๊น ๋ ๋ถํธํ ๊ฒ ๊ฐ๋ค..~!) CoreData๋ UserDefaults๋ฅผ ์ฌ์ฉํ๋ฉด์ ์๊ฒ ๋์๋๋ฐ, ์ ์ ๋ด๊ฐ ์ฌ์ฉํ๋ ์ ์ด ์๋ UserDefaults๋ ๊ฐ๋จํ ๋ฐ์ดํฐ(?)๋ฅผ ์ ์ฅํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๊ณ , CoreData๋ ๊ทธ๋ณด๋ค ๋ ํฐ ๊ท๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฌ๋ค๊ณ ํ๋ค! ์ ๋ด๊ฐ ์๊ฐํ๊ธฐ์ ์๋ฅผ๋ค์๋ฉด ๋ก๊ทธ์ธ์ ํ๋์ง ์ํ๋์ง์ ๋ํ ์ฌ๋ถ.. ์๊ฐ์ ๊ฐ๋จํ ์ ๋ณด๋ UserDefaults, ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ๊ฐ๋ฐ์ค์ธ ..
๋ค์ด์ด๋ฆฌ ์ฑ์ ๊ฐ๋ฐํ๋ฉด์ ํ์ ํ ์ดํ๋ก์ ํธ๋ฅด ํ ๋๋ ํฌ๊ฒ ๊ณ ๋ คํ์ง ์์๋ ๋๋ ํ๋ฉด์ ํ ๋ฐฉ์์ ์ฌ์ฉ์์ ํธ์๋ฅผ ์ค์ ์ผ๋ก ์๊ฐํ๋ฉฐ ๊ฐ๋ฐํ๋ค ๋ณด๋ ํธ๋ฆฌํจ์ ์ํด present๋ฐฉ์์ผ๋ก ํ๋ฉด์ ๋์ฐ๋ ๋ฐฉ์์ push ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํ๋ ์ํฉ์ด ์๊ฒผ๋ค. present์ push ๋ฐฉ์์ ๊ฒฐ๊ณผ๋ฌผ๋ง ๋ณด์๋ฉด ํฌ๊ฒ ์ฐจ์ด๋ ์์ง๋ง ๋ด๊ฐ ์ง์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ ๋๋ ์ฐจ์ด์ ์์๋ 1. ์ผ์ชฝ์ผ๋ก ์ค์์ดํํ์ฌ ๋ทฐ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ์ 2. ์๋ก์ด ๋ทฐ๊ฐ ๋ํ๋ ๋ ์ ๋๋ฉ์ด์
๋ฐฉ์ (๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก ๋ทฐ๊ฐ ๋ํ๋๊ฒ ํ๊ณ ์ถ์ผ๋ฉด push๋ก ํด์ผ๋ง ํ๋ ๊ฒ ๊ฐ๋ค.) ๋ ์์๋ ๊ฒ ๊ฐ์๋ฐ ํฌ๊ฒ๋ ์ด์ ๋..? ์ด๊ฒ ๊ทธ๋ ๊ฒ ํฐ ์ฐจ์ด์ธ๊ฐ ํ๋๋ฐ ์ฌ์ํ ๋ฐฉ์์์ ๋ญ๊ฐ ์ฑ์ด ํ์ ํด๋ณด์ด๋..? ๋๋์ด ๋๋ ๊ฒ ๊ฐ์๋ค. ์ฒ์์๋ ๋ด๊ฐ ํธํ๋ค๊ณ ์๊ฐํ๋ ๋ฐฉ์์ธ..
์ ๋ง ๋ง์ ์ฑ์์ ์์ฃผ ์ฐ์ด๋ TableView... ์ ์ ์๊ณ์ฑ์ ํด๋ก ์ฝ๋ฉํ ๋ ์ด๋์ ๋ ๊ณต๋ถํ๋ค๊ณ ์๊ฐํ๋๋ฐ ์์ฐ๋ค๋ณด๋ ๋ด ๊ธฐ์ต์์์ ์ฌ๋ผ์ ธ๋ฒ๋ ธ๋ค..ใ
ใ
๐คฃ ๊ทธ๋์ ๋ฏธ๋์ ๋๋ฅผ ์ํด... ์ด๋ฒ์ ์ ๋๋ก ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค! ๋จผ์ TableView๋ Table View, Table View Controller 2๊ฐ์ง๊ฐ ์๋ค. ๋์ฌ์ง์ด ๋๊ฐ์ ๊ตฌ์ฑ์ฒ๋ผ ๋ณด์ด์ง๋ง.. ์ข์ธก์ ViewController์ Table View์ Table View Cell์ ๋ฃ์ ๊ฒ์ด๊ณ ์ฐ์ธก์ ๊ทธ๋ฅ Table View Controller์ด๋ค. ๋ด๊ฐ ์ฑ
์์ ๋ดค๋ ์์ ์์๋ ์ฐ์ธก Table View Controller๋ฅผ ์ฌ์ฉํ์๋๋ฐ ์ฐพ์๋ณด๋ ์ข์ธก์ฒ๋ผ ViewController์ TableView์ TableViewCell์ ๋ฃ๋ ๊ฒ์ ..
textField์ ์ ๋ณด๋ฅผ ์
๋ ฅํ ํ ... ํค๋ณด๋๊ฐ ์ฌ๋ผ์ ์๋ ํ๋ฉด์์ ํค๋ณด๋๋ฅผ ์ฌ๋ผ์ง๊ฒ ํ๊ณ ์ถ์ ๋, ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ์ฉ.. 1. ๋นํ๋ฉด์ ๋๋ ์ ๋ ๋จผ์ ! ๋นํ๋ฉด์ ๋๋ ์ ๋ ํค๋ณด๋๋ datePicker๊ฐ ์ฌ๋ผ์ง๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ณ ์ถ์ ๋! override func touchesBegan(_ touches: Set, with event: UIEvent?) { self.view.endEditing(true) } 2. return ๋ฒํผ์ ๋๋ ์ ๋ ๋จผ์ , UITextFieldDelegate ํ๋กํ ์ฝ์ ์ค์ํด ์ฃผ์ด์ผ ํฉ๋๋ค! class myViewController: UITextFieldDelegate { } ๋ค์์ผ๋ก ์ด ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค override func viewDidLoad..