[Swfit] @unknown default / @frozen enum

์—ด๊ฑฐํ˜•์€ ๋‹ค์–‘ํ•œ ์ผ€์ด์Šค๋กœ ๋‚˜๋‰˜๋ฉฐ, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ๋•Œ ์ฃผ๋กœ switch๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค. Swift 5์—์„œ ์†Œ๊ฐœ๋œ @unknown default๋Š” ์—ด๊ฑฐํ˜•(enum) ์ฒ˜๋ฆฌ ์‹œ ์ƒˆ๋กœ์šด ์ผ€์ด์Šค๊ฐ€ ์ถ”๊ฐ€๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ผ€์ด์Šค๋ฅผ ๋Œ€๋น„ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ธฐ๋Šฅ์ด๋‹ค. ๐Ÿ”Ž  1 . ์—ด๊ฑฐํ˜•(enum)์˜ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•1) Frozen Enum (๊ณ ์ • ์—ด๊ฑฐํ˜•)Frozen Enum์€ ๋” ์ด์ƒ ์ƒˆ๋กœ์šด ์ผ€์ด์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์„ ๊ฒƒ์ด ๋ณด์žฅ๋œ ์—ด๊ฑฐํ˜•์ด๋‹ค.์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ์—ด๊ฑฐํ˜• ๋Œ€๋ถ€๋ถ„์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค.์ด ์—ด๊ฑฐํ˜•์€ ์ถ”ํ›„์— ์ƒˆ๋กœ์šด ์ผ€์ด์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ฉฐ, ๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.enum Food { case chicken case pizza case hamburger}let my..

๐ŸŽ iOS/Swift 2024. 12. 4. 22:48

[Swift] Type Aliases(ํƒ€์ž… ๋ณ„์นญ)

๐Ÿ”Ž  1 . TypeAliases (ํƒ€์ž… ๋ณ„์นญ) TypeAliases๋Š” ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํƒ€์ž…(ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•, ํ•จ์ˆ˜, ํŠœํ”Œ ๋“ฑ)์„ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์ •์˜ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ , ํŠน์ • ํƒ€์ž…์˜ ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.typealias ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•œ๋‹ค.    ๐Ÿ”Ž  2. ๊ธฐ๋ณธ ๋ฌธ๋ฒ•    ๐Ÿ”Ž  3. ์‚ฌ์šฉ ์˜ˆ์‹œ1. ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ์ฝ”๋“œ์—์„œ ํƒ€์ž…์˜ ์ด๋ฆ„์ด ๊ธธ๊ฑฐ๋‚˜ ๋ณต์žกํ•  ๋•Œ  typealias Point = (x: Int, y: Int) let orign: Point = (x: 0, y: 0)  2. ๋ณต์žกํ•œ ํƒ€์ž… ๋‹จ์ˆœํ™”์ œ๋„ค๋ฆญ ํƒ€์ž…์ด๋‚˜ ํ•จ์ˆ˜ ํƒ€์ž…๊ณผ ๊ฐ™์ด ๋ณต์žกํ•œ ํƒ€์ž…์„ ๊ฐ„๋‹จํ•œ ์ด๋ฆ„์œผ๋กœ ์ •์˜ํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉtypealias StringDictionary = [St..

๐ŸŽ iOS/Swift 2024. 11. 25. 02:10

[ Swift ] Error Handling

Swift์—์„œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€1. ์˜ต์…”๋„ : ์ž˜๋ชป๋œ ์ฒ˜๋ฆฌ์˜ ๊ฒฐ๊ณผ๋‚˜ ์‹คํ–‰ ๋„์ค‘ ์‹คํŒจํ–ˆ์„ ๋•Œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋Œ€์‹  nil์„ ๋ฐ˜ํ™˜. 2. ์—๋Ÿฌ์ฒ˜๋ฆฌ ๊ตฌ๋ฌธ: ๋ฐ˜ํ™˜๊ฐ’ ํƒ€์ž…์ด๋‚˜ ์ฝ”๋“œ์˜ ํ๋ฆ„๊ณผ ์ƒ๊ด€ ์—†์ด ์˜ค๋ฅ˜๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ.   ์—๋Ÿฌ์ฒ˜๋ฆฌ(Error Handlig)๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์—๋Ÿฌ ์กฐ๊ฑด์—์„œ ์‘๋‹ตํ•˜๊ณ  ๋ณต๊ตฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค. ์ผ๋ถ€ ์ž‘์—…์€ ํ•ญ์ƒ ์‹คํ–‰ ์™„๋ฃŒํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.์˜ต์…”๋„์„ ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์ž‘์—…์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ ์›์ธ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.    ๐Ÿ”Ž  1 . ์—๋Ÿฌ ํ‘œํ˜„๊ณผ ๋˜์ง€๊ธฐ(Representing and Throwing Errors) Swift์—์„œ ์—๋Ÿฌ๋Š” Error ํ”„๋กœํ† ์ฝœ์— ์ค€์ˆ˜ํ•˜๋Š” ํƒ€์ž…์˜ ๊ฐ’์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค.์ด ํ”„๋กœํ† ์ฝœ์€ ๋น„์–ด์žˆ์œผ๋ฉฐ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜ ๊ฒƒ์— ๋Œ€ํ•ด ์‚ฌ์šฉ๋ ..

๐ŸŽ iOS/Swift 2024. 11. 5. 23:39

Alert๊ณผ ๋™๊ธฐ/๋น„๋™๊ธฐ ๊ฐœ๋…

showAlert ๋ฉ”์„œ๋“œ๋Š” ๋น„๋™๊ธฐ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด, UIAlertController๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•Œ๋ฆผ์„ ๋„์šฐ๋Š” ์ž‘์—…์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.  ๋น„๋™๊ธฐ ๋™์ž‘์˜ ๊ฐœ๋…UI ๊ด€๋ จ ์ž‘์—…์˜ ๋น„๋™๊ธฐ์„ฑ:UIAlertController๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ์ž‘์—…์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” present(_:animated:completion:) ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ฐฉ์‹๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, present(_:animated:completion:) ํ˜ธ์ถœ ํ›„ UI๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ ์‹คํ–‰์ด ์ผ์‹œ ์ค‘๋‹จ๋˜์ง€ ์•Š๊ณ  ๊ณ„์† ์ง„ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ๋ฉ”์„œ๋“œ์™€ Completion Handler:UIAlertController์˜ present(_:animated:compl..

๐ŸŽ iOS/Swift 2024. 8. 29. 19:01

UITextField์™€ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด

UITextFieldUITextField๋Š” ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ์ด๊ณ , ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด์€ UITextField์˜ ๋™์ž‘์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๊ณ  ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. textField.delegate = self  -> ํ…์ŠคํŠธํ•„๋“œ์˜ ๋Œ€๋ฆฌ์ž๊ฐ€ ๋ทฐ์ปจ์ด ๋จ. ํ…์ŠคํŠธํ•„๋“œ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ ์ „๋‹ฌ ๋ฐ›์Œํ…์ŠคํŠธํ•„๋“œ์—์„œ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ทธ ์‹œ์ ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•  ํ…Œ๋‹ˆ ๋ฉ”์„œ๋“œ๋ฅผ ์ฑ„ํƒํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋ผ.  textField.becomeFirstResponder() //ํ‚ค๋ณด๋“œ ์˜ฌ๋ผ์˜ดtextField.resignFirstResponder() //ํ‚ค๋ณด๋“œ ๋‚ด๋ ค๊ฐ  ์ฃผ์š” UITextField Delegate ๋ฉ”์„œ๋“œ์™€ ์‚ฌ์šฉ ์˜ˆ์ œtextFieldShouldBeginEditing(_:)ํ…์ŠคํŠธ ํ•„๋“œ..

๐ŸŽ iOS/Swift 2024. 8. 28. 23:36

[ Swift ] ํ”„๋กœํ† ์ฝœ(protocol)

๐Ÿ”Ž  1 . ํ”„๋กœํ† ์ฝœํ”„๋กœํ† ์ฝœ์€ ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ํŠน์„ฑ์„ ๊ตฌํ˜„ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋‚˜ ํ”„๋กœํผํ‹ฐ์˜ ์ฒญ์‚ฌ์ง„์„ ์ œ๊ณตํ•œ๋‹ค.ํ”„๋กœํ† ์ฝœ์„ ์„ ์–ธํ•  ๋•Œ๋Š” ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์ด ์—†๊ณ  ํ˜•ํƒœ๋งŒ ์ œ๊ณตํ•œ๋‹ค.  ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ ์ด ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๋Š” ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•, extension ๊ฐ์ฒด์—์„œ ๋‹ด๋‹นํ•œ๋‹ค. ํ”„๋กœํ† ์ฝœ์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ ํ•œ๋‹ค.  protocol Drawable { var name: String { get } // ์ฝ๊ธฐ ์ „์šฉ ํ”„๋กœํผํ‹ฐ func draw ()}//ํ”„๋กœํ† ์ฝœ ์ฑ„ํƒclass Circle: Drawable { var name: String { //๊ณ„์‚ฐ ํ”„๋กœํผํ‹ฐ return "Circle" } func draw() { ..

๐ŸŽ iOS/Swift 2024. 8. 25. 08:01

[ Swift ] ํ”„๋กœํผํ‹ฐ(Property) / NetworkManager์™€ shared

์ธ์Šคํ„ด์Šค ๋˜๋Š” ํƒ€์ž…์˜ ๋ถ€๋ถ„์ธ ์ €์žฅ๋œ ๊ฐ’๊ณผ ๊ณ„์‚ฐ๋œ ๊ฐ’์— ์ ‘๊ทผํ•œ๋‹ค. ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์—์„œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ’์— ๋Œ€ํ•œ ์ €์žฅ์—ฌ๋ถ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ €์žฅํ”„๋กœํผํ‹ฐ์™€ ๊ณ„์‚ฐํ”„๋กœํผํ‹ฐ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.  - ํ”„๋กœํผํ‹ฐ์˜ ์œ„์น˜: ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€์—, ๋ฉ”์„œ๋“œ์˜ ์™ธ๋ถ€์— ์ •์˜ํ•œ๋‹ค. ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€๋Š” ํ”„๋กœํผํ‹ฐ๊ฐ€ ์•„๋‹Œ ์ง€์—ญ๋ณ€์ˆ˜.   1. ์ €์žฅํ”„๋กœํผํ‹ฐ ์ƒ์ˆ˜ ๋ฐ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ •์˜ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ž…๋ ฅ๋œ ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ €์žฅ๋œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ์—ญํ• . ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์—์„œ๋Š” ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์—ด๊ฑฐํ˜•์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ.    1-1. ์ง€์—ฐ ์ €์žฅ ํ”„๋กœํผํ‹ฐ(lazy)lazy ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์„ ์–ธ๋งŒ ๋  ๋ฟ ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š๊ณ  ํ˜ธ์ถœ๋˜๋Š” ์‹œ์ ์— ์ดˆ๊ธฐํ™”๋œ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ํ˜ธ์ถœ๋œ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜๋ฉฐ, ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ ํ˜ธ์ถœ ๋  ๋•Œ๋Š” ์ฒ˜์Œ ์ดˆ..

๐ŸŽ iOS/Swift 2024. 8. 24. 10:07

ํŽ˜์ด์ง•