SWIFT 31

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_๋ฐฐ์—ด์˜ ํ‰๊ท ๊ฐ’

์ด ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ ๋”ํ•ด์ฃผ๋Š” ๊ณ ์ฐจํ•จ์ˆ˜ reduce๋ฅผ ์ด์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•ด์งˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค! ๊ณ ์ฐจํ•จ์ˆ˜ ๋ฐฐ์šฐ๊ณ  ๋‚˜์„œ ๋ฐ‘์— ์ด์–ด์„œ ์ถ”๊ฐ€๋กœ ์ž‘์„ฑํ•ด ๋ณผ ์˜ˆ์ •์ด๋‹ค. ^0^ (+์ถ”๊ฐ€) reduce ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋‹ˆ ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๊ฐ„๋‹จํ•ด์กŒ๋‹ค!! ์•„์ง ๋ฐ”๋กœ reduce๋กœ ๋งŒ๋“ค๊ธฐ์—๋Š” ์ฝ”๋“œ๊ฐ€ ๋จธ๋ฆฟ์†์— ์ž˜ ์•ˆ๋“ค์–ด์™€์„œ for๋ฌธ์œผ๋กœ ๋จผ์ € ๋งŒ๋“ค๊ณ , ๋ณด๋ฉด์„œ reduce๋ฅผ ์‚ฌ์šฉํ•ด๋ด์•ผ๊ฒ ๋‹ค!๐Ÿ˜ƒ

3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ•์ข…ํ•ฉ๋ฐ˜ ์‹ฌํ™”_(1์ผ์ฐจ)

์˜ค๋Š˜๋ถ€ํ„ฐ swift ๋ฌธ๋ฒ• ๊ธฐ์ดˆ์—์„œ ์‹ฌํ™” ๊ฐ•์˜ ์‹œ์ž‘! 1๊ฐ•๋ถ€ํ„ฐ 4๊ฐ•๊นŒ์ง€ ๋ดค๋Š”๋ฐ, ๋ฌด์Šจ ๋ง์ธ์ง€...๐Ÿคฏ ๋˜ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณด๋Š”์ค‘์ด๋‹ค..ใ…Žใ…Ž [๋‚ด๋ฐฐ์บ ] ๊ฐ•์˜ ๋จผ์ € ๋‹ค ๋ณด๊ณ , ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์€ ์œ ํŠœ๋ธŒ ๊ฐ•์˜ ์ฐพ์•„์„œ ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฒˆ ์ฃผ ์‹ฌํ™” ๊ณผ์ œ๋Š” '์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ'์ธ๋ฐ, ์•„์ง ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ.. ์ผ๋‹จ ์˜ค๋Š˜ ๋‚ด์ผ์€ ๊ฐ•์˜ ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ค์œผ๋ฉด์„œ ๊ณต๋ถ€ํ•  ์˜ˆ์ •์ด๋‹ค. ์˜ค๋Š˜ ์ •๋ฆฌํ•  ๋‚ด์šฉ์€ 'ํ”„๋กœํผํ‹ฐ์™€ ์˜ต์ €๋ฒ„', 'ํƒ€์ž…์บ์ŠคํŒ…', '์ ‘๊ทผ์ œํ•œ์ž'์ด๋‹ค. ํ”„๋กœํผํ‹ฐ์™€ ์˜ต์ €๋ฒ„ (Property Observer) ํ”„๋กœํผํ‹ฐ ๊ฐ’์˜ ๋ณ€ํ™”๋ฅผ ๊ด€์ฐฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ, "์ €์žฅ ํ”„๋กœํผํ‹ฐ"์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ ๊ฐ’์˜ ์†์„ฑ์ด ํ˜„์žฌ ๊ฐ’๊ณผ ๋™์ผํ•˜๋”๋ผ๋„ ์†์„ฑ ๊ฐ’์ด ์„ค์ •๋˜๋ฉด ํ˜ธ์ถœ๋œ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ, ๊ด€์ฐฐ๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋ฉด ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ (๋ณ€๊ฒฝ์‚ฌํ•ญ..

ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(2)

2024.03.02 - [Study/YouTube ๊ฐ•์˜ ๊ณต๋ถ€] - ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(1) ์—ฌ๊ธฐ์„œ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰! โ‘  Main.storyboard - Table view์— Table View Cell ์ถ”๊ฐ€ - ์‚ฌ์ด์ฆˆ ์กฐ๊ธˆ ๋Š˜๋ฆฌ๊ณ , ์•ˆ์— Label ์ถ”๊ฐ€ (Label → ์ค‘์•™์ •๋ ฌ, Add New Constraints์—์„œ ์ƒํ•˜์ขŒ์šฐ 0์œผ๋กœ ์…‹ํŒ…) โ‘ก ์ถ”๊ฐ€ํ•œ Table View cell ํด๋ฆญ - ์šฐ์ธก ์ฐฝ → Identifier : ์ด๋ฆ„ ('Identifier: Type1' ์œผ๋กœ ํ•˜๊ฒ ์Œ, ) โ‘ข ์•ž์„œ 1๋ฒˆ์งธ ๋ฐฉ๋ฒ•์—์„œ reuseIdentifier์„ "TableViewFirstType"์ด๋ผ๊ณ  ์ •ํ–ˆ์—ˆ๋‹ค. ์ด์ œ๋Š” ์ด ์ด๋ฆ„์ด "Type1"์ด ๋œ๋‹ค. ์ด "Type1"์„ ์ง€์ •ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ ํ•„..

ํ…Œ์ด๋ธ” ๋ทฐ(UITableView)_[iOS/Swift]_(1)

TableView ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์ •๊ฐˆํ•˜๊ฒŒ ๋ณด์—ฌ์ง€๊ธฐ ์œ„ํ•ด์„œ? ์ „ํ™”๋ฒˆํ˜ธ๋ถ€๋งŒ ์ƒ๊ฐํ•ด๋ด๋„ ์—ฌ๋Ÿฌ ์ •๋ณด๋“ค์„ ๋‹ด๋Š” ํ™”๋ฉด์˜ ๊ฒฝ์šฐ์—๋Š” TableView๊ฐ€ ์œ ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์œ ์‚ฌํ•œ UI๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ€๋ณ€ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค. TableView๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ?๐Ÿค” 1. ํ…Œ์ด๋ธ”์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€. (ex) ์ „ํ™”๋ฒˆํ˜ธ๋ถ€, ์•„์ดํฐ Setting ์•ฑ , โˆ™โˆ™โˆ™ 2. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ ๊ฐœ์ธ๊ฐ€? (ex) 100๊ฐœ, 1000๊ฐœ, 10000๊ฐœ, โˆ™โˆ™โˆ™ 3. ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํ–‰์„ ํด๋ฆญํ•˜๋ฉด? - (ํ•„์ˆ˜ X) โ‘  XCode - ์•ฑ ์ƒ์„ฑ → (์ด๋ฆ„: MyTableView)์œผ๋กœ ํ•˜๊ฒ ์Œ. โ‘ก ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ Show Library - Table View ์ถ”๊ฐ€ - ํ•˜๋‹จ์—..

Swift - Array

Array '๋ฌด์–ธ๊ฐ€๋ฅผ ๋‹ด๋Š” ํ†ต'์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. array๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ํ†ต์— ๋‹ด์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ด ํ†ต์— ๋‹ด๋Š” ๋ณ€์ˆ˜๋“ค์€ 'element'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. array๋Š” ๋‘ ๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค. โ‘  ํ†ต์— ๋‹ด์„ ๋•Œ๋Š” ๊ฐ™์€ ํƒ€์ž…์„ ๋‹ด์•„์•ผ ํ•œ๋‹ค. (ex. Int๋ผ๋ฆฌ, String๋ผ๋ฆฌ ...) โ‘ก ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. array ์† element๋“ค์˜ ์ˆœ๋ฒˆ์ด ์กด์žฌํ•œ๋‹ค. ์ด ์ˆœ๋ฒˆ์„ Index๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. (Index๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰ Index๋Š” (์ „์ฒด ๊ฐฏ์ˆ˜ - 1)๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.) Q. array๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ• ๊นŒ? ๐Ÿค” โ‘  ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” item โ‘ก item์˜ ์ˆœ์„œ๋ฅผ ์•Œ๋ฉด ์œ ์šฉํ•  ๋•Œ ๊ทธ๋Ÿผ ์ด์ œ๋ถ€ํ„ฐ array๋ฅผ ์–ด๋–ป๊ฒŒ swift๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์‚ฌ์šฉํ• ์ง€ ์•Œ์•„๋ณด์ž!! :-) < array ๋งŒ๋“ค๊ธฐ, ์š”..

Swift - Optional(์˜ต์…”๋„)_๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

๊ณ ๊ธ‰ ๊ธฐ๋Šฅ 4๊ฐ€์ง€ 1. Forced unwrapping optional 2. Optional binding 3. Guard statement 4. Nil coalescing 1. Forced unwrapping optional → ์–ต์ง€๋กœ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž. 2. Optional binding → ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž. 3. Guard statement → ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž 2ํƒ„ (guard๋ฌธ) 4. Nil coalescing → ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์•˜๋”๋‹ˆ ๊ฐ’์ด ์—†์œผ๋ฉด ๋””ํดํŠธ ๊ฐ’์„ ์ฃผ์ž. ๊ทธ๋ƒฅ print(carName) ํ•˜๋ฉด, ์˜ต์…”๋„๋กœ ๋œธ. ๋งŒ์•ฝ, ๋ฐ•์Šค์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค๋ฉด? ์ฆ‰, carName = nil ์ธ ์ƒํƒœ์—์„œ print(carName!)์„ ํ•œ๋‹ค..

Swift - Optional(์˜ต์…”๋„)

Optional ?? Optional์€ swift๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๋Š” ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ฝ”๋”ฉ ์ค‘๊ฐ„์— ?(๋ฌผ์Œํ‘œ)๋‚˜ !(๋А๋‚Œํ‘œ)๊ฐ€ ๋ง‰ ์„ž์—ฌ ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ Optional์€ ์–ด๋А ์ƒํ™ฉ์—์„œ ์œ ์šฉํ• ์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฆ„์„ ํ‘œํ˜„ํ•˜๋Š” ๋ณ€์ˆ˜๋“ค์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. var name : String = "Ygenie" var pandaName: String = "Fubao" var carName: String = ??? ์œ„์— ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ๋‚˜์˜ ์ด๋ฆ„์„ "Ygenie"๋กœ ํ• ๋‹นํ•˜์˜€๊ณ , ํŒ๋‹ค์˜ ์ด๋ฆ„์„ "Fubao"๋ผ๊ณ  ํ• ๋‹นํ•˜์˜€๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๋งŒ์•ฝ ๋šœ๋ฒ…์ด๋ผ ์ž๋™์ฐจ๊ฐ€ ์—†์–ด์„œ ์ด๋ฆ„์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•ด์•ผ ํ• ๊นŒ? ๋ฌผ๋ก , Boolean ๋ณ€์ˆ˜๋ฅผ ๋‘..