728x90

๐Ÿ“ฑ App Development Study 63

[Udemy iOS & Swift Bootcamp] Internal and External Parameter Names

swift ํ•จ์ˆ˜์—์„œ ์•„๋ž˜์ฒ˜๋Ÿผ external, internal ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. func myFunc(External Internal: Type){ print(Internal) } myFunc(External: value) ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ myFunc ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•, External ๋ณ€์ˆ˜์— ์–ด๋–ค ๊ฐ’์„ ๋„ฃ์–ด์•ผ ํ•˜๋Š”์ง€ ์œ„์ฒ˜๋Ÿผ ์ •ํ™•ํ•˜๊ฒŒ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค. ์ด ๋•Œ, ์•„๋ž˜์ฒ˜๋Ÿผ _ ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด External ๋ณ€์ˆ˜๋ช…์„ ์•ˆ์ ์–ด๋„ ๋œ๋‹ค. func myFunc(_ Internal: Type){ print(Internal) } myFunc(value) ์‚ด์ง ํ—ท๊ฐˆ๋ฆฌ์ง€๋งŒ ๊ธฐ์–ตํ•ด๋‘์ž!

[Udemy iOS & Swift Bootcamp] Computed Property(์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ)

*Computed Property: ๋‹ค๋ฅธ ์†์„ฑ ๊ฐ’์œผ๋กœ ํ•ด๋‹น ์†์„ฑ์˜ ๊ฐ’์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ. ์•„๋ž˜ condition ID ๊ฐ’์œผ๋กœ condition Name์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ์ด ๋•Œ, condition Name์„ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด weatherData๋ฅผ ์„ ์–ธ ํ›„ ํ•จ์ˆ˜๋กœ ์ ‘๊ทผํ•ด์•ผํ•  ๊ฒƒ์ด๋‹ค. ์ด ๋ถ€๋ถ„์„ computed Property๋กœ ๋ฐ”๊พธ๋ฉด watherData ์„ ์–ธ ์ฆ‰์‹œ condition Name์˜ ๊ฐ’๋„ ์„ ์–ธ๋˜์–ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๊ทธ๋ƒฅ ์„ ์–ธํ•œ conditionId, cityName ๊ฐ™์€ stored Property๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜์ง€๋งŒ, computed Property๋Š” ์ €์žฅ๊ณต๊ฐ„์„ ์ฐจ์ง€ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ ๊ณ„์† ๊ฐ’์ด ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ var ํ˜•์œผ๋กœ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค. import Foundation struc..

[Udemy iOS & Swift Bootcamp] API ๋กœ Json ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ. Json Parsing

* Json ์ด๋ž€? : JavaScript Object Notation. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•. : JavaScript ๊ฐ์ฒด๋ฅผ ์ „์†กํ•˜๊ธฐ ์‰ฝ๋„๋ก ๊ฐ€๋ณ๊ฒŒ ํ‘œํ˜„ํ•œ ๋ฐฉ๋ฒ•. -> Networking์„ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ Json์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋„˜๊ฒจ์•ผ ํ•˜๊ณ , Web์—์„œ ๋ฐ›์•„์˜จ Json ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ณ€๊ฒฝํ•˜๋Š” Parse ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. [Json ๋ฐ์ดํ„ฐ] { "coord": { "lon": -0.1257, "lat": 51.5085 }, "weather": [ { "id": 804, "main": "Clouds", "description": "overcast clouds", "icon": "04d" } ], "base": "stations", "main": { "temp": 285.22, "feels_like": 28..

[Udemy iOS & Swift Bootcamp] Closure(ํด๋กœ์ €)

* Closures : ๋žŒ๋‹ค์‹ ๊ฐ™์€๊ณ . : Closure๋Š” named Closure๊ณผ unnamed Closure๊ฐ€ ์žˆ๋‹ค. named Closure๊ฐ€ ์ผ๋ฐ˜ swift ํ•จ์ˆ˜๋ฅผ ๋งํ•˜๊ณ , unnamed Closure๋Š” ์ด๋ฆ„์—†์ด ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ Closure๋ผ๊ณ  ํ•˜๋ฉด unnamed Closure๋ฅผ ๋œปํ•œ๋‹ค. ์•„๋ž˜ completionHandler๋กœ ์‚ฌ์šฉํ•œ handle ํ•จ์ˆ˜๋ฅผ ๋ณด์ž. handle ํ•จ์ˆ˜๋ฅผ func ํ•จ์ˆ˜๋กœ ๋ช…์‹œํ•˜์—ฌ ๋”ฐ๋กœ ์ •์˜ํ•ด์ฃผ์—ˆ๋‹ค. ์ด๋Ÿฐ๊ฑธ named Closure๋ผ๊ณ  ํ•œ๋‹ค. ์ด๊ฑธ Closure(unnamed Closure)๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค. ํ•จ์ˆ˜๋ช…์„ ์—†์• ๊ณ  ์ธ์ž๋งŒ ๋‚จ๊ธด ํ›„, in ์•ˆ์— handle ํ•จ์ˆ˜์— ์žˆ๋˜ ๋‚ด์šฉ์„ ์ ์–ด์คฌ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ช… ์—†์ด ์ธ์ž, ๋ฆฌํ„ด, ํ•จ์ˆ˜๋‚ด์šฉ์„..

[Udemy iOS & Swift Bootcamp] Delegate Design Pattern

Delegate Design Pattern? delegate. ํ•œ๊ธ€๋กœ๋Š” ์œ„์ž„์ž๋ผ๋Š” ๋œป์ด๋‹ค. ์ฆ‰, delegate(์œ„์ž„์ž)๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์ž์‹ ์˜ ์ผ์„ ์œ„์ž„ํ•˜๋Š” ํ˜•ํƒœ์˜ ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. Delegate Design Pattern์˜ ๊ธฐ์›? ์•ž์„œ ๋ฐฐ์šด UITextField ๊ฐ€ ์ˆ˜์ •์„ ์‹œ์ž‘ํ•  ๋•Œ๋ฅผ ํด๋ž˜์Šค์—์„œ ์•Œ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผํ• ๊นŒ? ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ UITextField ํด๋ž˜์Šค๊ฐ€ ํด๋ž˜์Šค์—๊ฒŒ ์ง์ ‘ ๋ณด๊ณ  ํ•ด์•ผํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•œ๋‹ค ๊ฐ€์ •ํ–ˆ์„ ๋•Œ์˜ ๋ฌธ์ œ์ ์ด ๋งŽ๋‹ค. ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” UITextField๋ฅผ ๋งŒ๋“ค ์‹œ์ ์— WeatherViewController์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅธ๋‹ค. ์ƒˆ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ๋งˆ๋‹ค ์ƒˆ UITextField ํด๋ž˜์Šค์—์„œ ๊ณ„์† ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ์–ด๋–ค ..

[Udemy iOS & Swift Bootcamp] UITextField, UITextFieldDelegate

* UITextField ์ƒ์„ฑ/๊ธฐ๋ณธ ์†์„ฑ - UITextField ์—๋„ Dark/LIght Mode๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ์šฉ๋œ๋‹ค. - Text Input Type์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. - Return Key ๋Š” ํ‚ค๋ณด๋“œ์—์„œ ํ™•์ธ?๋ฒ„ํŠผ์„ Enter๋‚˜ Go ๋“ฑ ์–ด๋–ป๊ฒŒ ๋ณด์ด๊ฒŒ ํ• ์ง€ ์„ค์ •ํ•˜๋Š” ๊ฑฐ๋‹ค. Default๋Š” Return. - Sezure Text Entry๋Š” ์•”ํ˜ธํ•„๋“œ์—์„œ ์ž…๋ ฅ๋œ ๊ธ€์ž๊ฐ€ ์•ˆ๋ณด์ด๊ฒŒ ํ•œ๋‹ค. * ์‚ฌ์šฉ ViewController ์Šคํฌ๋ฆฝํŠธ์— UITextField ์—ฐ๊ฒฐํ•ด์„œ IBOutlet, IBAction ๋งŒ๋“ค์–ด์ฃผ๊ธฐ ํ‚ค๋ณด๋“œ ์•ˆ๋‚˜์˜ค๋ฉด Command + k ๋ˆ„๋ฅด๋ฉด Keyboard ํ† ๊ธ€๋ผ์„œ ์˜ฌ๋ผ์˜จ๋‹ค. * Return Key ๋ˆŒ๋ €์„ ๋•Œ ๋ฐ˜์‘ํ•˜๊ฒŒ ํ•˜๊ธฐ 1. UITextFieldDelegate ํด๋ž˜์Šค ์ถ”๊ฐ€ํ•˜๊ณ  UIText..

[Udemy iOS & Swift Bootcamp] Protocol

*ํ”„๋กœํ† ์ฝœ: ์†์„ฑ์ด๋‚˜ ๋ฉ”์†Œ๋“œ์˜ ํ˜•ํƒœ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“๋Š” ๊ฒƒ. ์ƒ์†์„ ์ข€๋” ๊ตฌ์กฐ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก. ์ด ๋•Œ, ํ”„๋กœํ† ์ฝœ์€ ์ •์˜๋งŒ ํ•  ๋ฟ ์„ธ๋ถ€ ๋‚ด์šฉ์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ป๋ฐ๊ธฐ๋งŒ ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋จ. ํ”„๋กœํ† ์ฝœ์€ ํด๋ž˜์Šค์™€ ๊ตฌ์กฐ์ฒด์— ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ ์ฝ”๋“œ) protocol CanFly{ func fly() } class Bird { var isFemale = true func layEgg(){ if isFemale { print("The bird makes a new bird in a shell.") } } } class Egle: Bird, CanFly{ func fly() { print("The elgle flpas its wings and lifts off into the sky.") } func soar..

[Udemy iOS & Swift Bootcamp] Supporting Dark Mode

Dark Mode ? ์ตœ๊ทผ Dark Mode๋ฅผ ์ง€์›ํ•˜๋Š” ์•ฑ์ด ๋งŽ์•„์ง€๊ณ  ์žˆ๋‹ค. Dark Mode๋ž€ System Mode์˜ Light, Dark ์„ค์ •์— ๋”ฐ๋ผ ์•ฑ๋„ ๋ฐ๊ณ , ์–ด๋‘์šด ํ™”๋ฉด์„ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  Xcode ์—์„œ๋Š” ์ด๋ฅผ ์‰ฝ๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งจ ์•„๋ž˜ Appearance ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด Light, Dark ๋ชจ๋“œ ํ™•์ธ ๊ฐ€๋Šฅ 1. Label Color ์ด์šฉํ•˜๊ธฐ Label ์ปฌ๋Ÿฌ๋กœ ์ง€์ •ํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ System ๋ชจ๋“œ์— ๋งž์ถฐ์„œ ํ•˜์–€์ƒ‰, ๊ฒ€์€์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. 2. Label Color ์ปฌ๋Ÿฌ ๋ง๊ณ  Custom ์ปฌ๋Ÿฌ๋ฅผ Light, Dark Color๋กœ ์ €์žฅํ•˜๋Š” ๋ฒ• 1) Custom ์ปฌ๋Ÿฌ๋ฅผ ํŒ”๋ ›ํŠธ์— ์ €์žฅํ•˜๊ธฐ ์ž„์˜์˜ Light, Dark์ปฌ๋Ÿฌ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ์›ํ•˜๋Š” ์ปฌ๋Ÿฌ๋ฅผ ํŒ”๋ ˆํŠธ์— ์ €์žฅํ•ด๋‘๋ฉด ์ ์šฉํ•˜๊ธฐ ํŽธํ•˜๋‹ค. ์›ํ•˜..

[iOS] SF Symbols ? ๋‹ค์šด๋กœ๋“œ ๋งํฌ

SF Symbols: iOS 13 ์ด์ƒ์˜ OS๋ถ€ํ„ฐ ์ง€์›ํ•˜๋Š” apple ๋””์ž์ด๋„ˆ๋“ค์ด ๋งŒ๋“  1500์—ฌ๊ฐœ์˜ ๊ธฐํ˜ธ์™€ ์ด๋ฏธ์ง€ - SF Symbols ์„ค๋ช… https://developer.apple.com/design/human-interface-guidelines/foundations/sf-symbols SF Symbols - Foundations - Human Interface Guidelines - Design - Apple Developer SF Symbols SF Symbols provides thousands of consistent, highly configurable symbols that integrate seamlessly with the San Francisco system font, autom..

[Udemy iOS & Swift Bootcamp] ๋‘๋ฒˆ์งธ ํŽ˜์ด์ง€ ๋งŒ๋“ค์–ด์„œ ๊ฐ’ ๋„˜๊ธฐ๊ธฐ

์—ฌ๋Ÿฌ ๊ฐœ์˜ View ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ’์„ ๋„˜๊ฒจ๋ณด์ž 1. segue ์—ฐ๊ฒฐ๋ฒ• 1) UI๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ ์™ผ์ชฝ View์—์„œ Ctrlํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ณ  ์˜ค๋ฅธ์ชฝ View์— ๋†“์œผ๋ฉด action์„ ์„ค์ •ํ•˜๋Š” ํŒ์—…์ด ๋œฌ๋‹ค. Show๋Š” ํ™”๋ฉด์ด ์™ผ์ชฝ์œผ๋กœ ๋ฐ€๋ฆฌ๋ฉฐ ๋‚˜ํƒ€๋‚˜๊ณ  ์™ผ์ชฝ ์ƒ๋‹จ์— ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์ด ์ƒ๊ธด๋‹ค. Present Modally๋Š” ์•„๋ž˜์—์„œ ์œ„๋กœ ์ƒˆ๋กœ์šด ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ๋‚œ Present Modally ์„ ํด๋ฆญํ–ˆ๋‹ค. 2) Segue์— Identifier ์ •์˜ํ•˜๊ธฐ ์—ฐ๊ฒฐ๋ถ€๋ถ„์ด ๋งŽ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์—ฐ๊ฒฐ๋ถ€๋ถ„์— Identifier๋ฅผ ์ฃผ์ž. 3) ์—ฐ๊ฒฐ ์‹œ ํ•„์š”ํ•œ ํ•จ์ˆ˜ ๊ตฌํ˜„ํ•˜๊ธฐ @IBAction func onClickButton(_ sender: UIButton) { self.performSegue(withIdentifier: "goToResult",..

728x90