iOS ์•ฑ ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜/TIL

2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ•์ข…ํ•ฉ๋ฐ˜ ๊ธฐ์ดˆ_(2์ผ์ฐจ)

yeggrrr๐Ÿผ 2024. 3. 5. 21:04

 




<TIL>


์˜ค๋Š˜์€ Swift ๋ฌธ๋ฒ•์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ํƒ€์ž…, ์—ฐ์‚ฐ์ž, ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ, ์˜ต์…”๋„, ์„ธํŠธ, ๋”•์…”๋„ˆ๋ฆฌ...
์ผ๋ถ€๋ถ„์€ ์ด์ „์— ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ์ด๋ผ ์ดํ•ดํ•˜๊ธฐ๋Š” ์‰ฌ์› ์ง€๋งŒ,
๋ง‰์ƒ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ๋ง๋กœ ํ’€์–ด๋‚ด๋Š”๊ฒŒ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค!
(๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋ฐฐ์šด๋Œ€๋กœ ๋”ฐ๋ผ์„œ ์ •๋ฆฌ.. ๋„์ ๋„์  ๊ณต๋ถ€..๐Ÿ˜‚)


์˜ค๋Š˜์€ ์˜จ๋ณด๋”ฉ ํŒ€์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒ€์œผ๋กœ ์ƒˆ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค.

์•„๋งˆ ๋ฌธ๋ฒ• ๊ธฐ์ดˆ์—์„œ ์‹ฌํ™”๊นŒ์ง€ 2์ฃผ๊ฐ„ ์ƒˆ๋กœ์šด ๋ถ„๋“ค๊ณผ ํ•จ๊ป˜ํ•  ๊ฒƒ ๊ฐ™๋‹ค!

๋ฐ”๋กœ ์•„๋ž˜ ๋‚ด์šฉ์ด ์˜ค๋Š˜ ๊ฐ•์˜๋กœ ๊ณต๋ถ€ํ•œ ๋ฌธ๋ฒ•๋“ค์ด๋‹ค.



 

๋ฐ์ดํ„ฐ ํƒ€์ž…
(Data Type)



Int - ์ •์ˆ˜, -2,147,483,648 ~ 2,147,483,647 ์‚ฌ์ด์˜ ์ˆซ์ž๋ฅผ ํ‘œํ˜„ ๊ฐ€๋Šฅ

Float
- ์‹ค์ˆ˜, ์†Œ์ˆ˜์ ์„ ํ‘œํ˜„, 32๋น„ํŠธ ๋ถ€๋™ ์†Œ์ˆ˜๋ฅผ ํ‘œํ˜„ ๊ฐ€๋Šฅ, ์†Œ์ˆ˜์  ์ดํ•˜ 6์ž๋ฆฌ๊นŒ์ง€ ๊ฐ€๋Šฅ


Double
- ์†Œ์ˆ˜์ ์„ ํ‘œํ˜„, 64๋น„ํŠธ ๋ถ€๋™ ์†Œ์ˆ˜๋ฅผ ํ‘œํ˜„ ๊ฐ€๋Šฅ, ์†Œ์ˆ˜์  ์ดํ•˜ 15์ž๋ฆฌ ์ด์ƒ ๊ฐ€๋Šฅ

(Float, Double ๋ชจ๋‘ ์ ํ•ฉํ•œ ์ƒํ™ฉ์—์„œ๋Š” 'Double' ์‚ฌ์šฉ!)

Bool
- true or false


String - ๋ฌธ์ž์—ด


Character - ํ•˜๋‚˜์˜ ๋ฌธ์ž


Tuple - ์—ฌ๋Ÿฌ ๊ฐ’์„ ํ•˜๋‚˜๋กœ ๊ทธ๋ฃนํ™” ํ•œ ๊ฒƒ, ๋‹จ์ˆœํ•œ ๊ทธ๋ฃน์— ์šฉ์ดํ•˜๊ณ  ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š ๋ฐ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ.


Any
- ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ’์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Œ.
- Any ๋ฐฐ์—ด์„ ๋งŒ๋“ค๋ฉด ํŠน์ • ํƒ€์ž…์˜ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ํƒ€์ž…์„ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ. 
- Any ๋ฐ์ดํ„ฐ ํ˜•์„ ๋Œ€์ž…ํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ˜• ๋ณ€ํ™˜์ด ํ•„์š”.

var anyArray: [Any] = [1, "Hi", false]

var anyValue: Any = 1000
anyValue = "๋ชจ๋“  ํƒ€์ž… ์ˆ˜์šฉ ๊ฐ€๋Šฅ"
anyValue = 1234.56

// ์ปดํŒŒ์ผ ์—๋Ÿฌ
let doubleValue: Double = anyValue
// → Error: Cannot convert value of type 'Any' to specified type 'Double'


// Any ํƒ€์ž…์— Double ๊ฐ’์„ ๋„ฃ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ด ๋‘˜์€ ์—„์—ฐํžˆ ๋‹ค๋ฅธ ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์—
// Double ํƒ€์ž…์˜ ๊ฐ’์— Any ํƒ€์ž…์˜ ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ์—๋Š” ๋ช…์‹์ ์œผ๋กœ ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.





์—ฐ์‚ฐ์ž

<์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž>
๋ง์…ˆ → + / +=
๋บ„์…ˆ → - / -=
๊ณฑ์…ˆ → *
๋‚˜๋ˆ—์…ˆ → /
๋‚˜๋จธ์ง€ → %

<๋น„๊ต ์—ฐ์‚ฐ์ž>
๊ฐ™๋‹ค / ๊ฐ™์ง€ ์•Š๋‹ค → == / !=
ํฌ๋‹ค / ์ž‘๋‹ค → > / <
ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค / ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค → >= / <=

<๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž>
๋…ผ๋ฆฌ ๋ถ€์ • Not → !
ex) !a → true๋Š” false๋กœ, false๋Š” true๋กœ ๋ณ€ํ™˜

๋…ผ๋ฆฌ ๊ณฑ AND → &&
ex) a && b → ๋‘ ๊ฐ’(a,b) ๋ชจ๋‘ true ์ผ ๋•Œ, true / ์ฆ‰, ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด false๋ผ๋ฉด ์ฆ‰์‹œ false๋กœ ๋ฐ˜ํ™˜

๋…ผ๋ฆฌ ํ•ฉ OR → ||
ex) a || b → ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ true๋ฉด true / ์ฆ‰, ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด true ๋ผ๋ฉด ์ฆ‰์‹œ true๋กœ ๋ฐ˜ํ™˜

<๋ฒ”์œ„ ์—ฐ์‚ฐ์ž>
a ์ด์ƒ b ์ดํ•˜ → (a...b)
a ์ด์ƒ b ๋ฏธ๋งŒ → (a..<b)
๋ฒ”์œ„ ์‹œ์ž‘ ํ˜น์€ ๋๋งŒ ์ง€์ • → a... / ...a
(์—ฌ๊ธฐ์„œ a๋Š” ๋ฒ”์œ„์— ํฌํ•จ)

<์‚ผํ•ญ ์—ฐ์‚ฐ์ž>
a ? b : c
→ a์˜ ๋‹ต์ด true ๋ฉด b, false๋ฉด c ๊ฐ’์„ ์‚ฌ์šฉ
→ if-else ๋ฌธ์„ ๊ฐ„๋žตํžˆ ํ‘œํ˜„ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.

 


์กฐ๊ฑด๋ฌธ(if ๋ฌธ, switch ๋ฌธ)


โ–ท if ๋ฌธ

์กฐ๊ฑด์„ ํ™•์ธํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ if ๋ฌธ์— ์ž‘์„ฑํ•œ ์กฐ๊ฑด์ด true ์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ตฌํ˜„๋ถ€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

if ๋ฌธ ์˜ˆ์‹œ

temperature๋Š” 17์ด๊ณ , if ์™€ else if ๋ชจ๋‘ ํ•ด๋‹นํ•˜์ง€ ์•Š์•„ else ๋ฌธ์— ์žˆ๋Š” ๊ฐ’์ด ์ถœ๋ ฅ๋œ ๊ฒƒ์ด๋‹ค.


โ–ท switch ๋ฌธ

- switch ๋ฌธ์€ ์—ฌ๋Ÿฌ ์ผ€์ด์Šค๋“ค๊ณผ ๊ฐ’์„ ๋น„๊ตํ•˜๊ณ , ์ผ์น˜ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ผ€์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋ถ€ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•œ๋‹ค.
- switch ๋ฌธ์€ ์—ด๊ฑฐํ˜•(enum)๊ณผ ํ•จ๊ป˜ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค.
- ๋ชจ๋“  case๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ default์— ๊ตฌํ˜„๋œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ , default๋Š” ํ•ญ์ƒ ๋งˆ์ง€๋ง‰์— ํ‘œ์‹œํ•œ๋‹ค.
- ํŠน์ • ์ผ€์ด์Šค์— ์‹คํ–‰ ๊ตฌ๋ฌธ์ด ์—†๋Š” ๊ฒฝ์šฐ break ํ‚ค์›Œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•œ๋‹ค.
- ํŠน์ • ์ผ€์ด์Šค์— ํ•ด๋‹น๋˜์–ด ์‹คํ–‰ ๊ตฌ๋ฌธ์ด ์‹คํ–‰๋œ ์ดํ›„์— ๋‹ค์‹œ ์ผ€์ด์Šค ๋ธ”๋Ÿญ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด fallthrough ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

switch-case-default
fallthrough

number๊ฐ€ 5์ด๊ธฐ ๋•Œ๋ฌธ์—, case 5์— ํ•ด๋‹นํ•˜๋Š” print("5")๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ ,
fallthrough๋กœ ๋‹ค์Œ ๋ธ”๋Ÿญ์œผ๋กœ ์ด๋™ํ•ด print("default")๊ฐ€ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.


๋ฐ˜๋ณต๋ฌธ (for ๋ฌธ, while ๋ฌธ)


โ–ท for ๋ฌธ

for๋ฌธ์€ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…(๋ฐฐ์—ด, ๋”•์…”๋„ˆ๋ฆฌ ๋“ฑ)์„ ์ˆœํšŒํ•˜๊ฑฐ๋‚˜
ํŠน์ • ํšŸ์ˆ˜๋งŒํผ ๋กœ์ง์„ ๋ฐ˜๋ณตํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

let alphabets: [String] = ["a", "b", "c", "d"]
for character in alphabet {
    print(character)
}

// a
// b
// c
// d

_______________________________________________
let students = ["Tom": 2, "Harry": 4, "Sarah": 1]
for (name, grade) in students {
    print("\(name) ์€ \(grade) ํ•™๋…„์ด์•ผ!")
}

// Tom ์€ 2 ํ•™๋…„์ด์•ผ!
// Harry ์€ 4 ํ•™๋…„์ด์•ผ!
// Sarah ์€ 1 ํ•™๋…„์ด์•ผ!



โ–ท while ๋ฌธ
- ํŠน์ • ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๋Š” ๋™์•ˆ ๋‚ด๋ถ€๋กœ์ง์„ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.
- ์ข…๊ฒฐ ์กฐ๊ฑด์„ ์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ฌดํ•œ๋ฃจํ”„๋กœ ๋Œ๊ฒŒ ๋œ๋‹ค.

- ๋ฐ˜๋ณต๋ฌธ์˜ ๊ฐ ํŒจ์Šค๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•œ๋‹ค.

while ๋ฌธ

'index: Int = 0' ์ด๊ณ , 'index < 4' ๊ฐ€ 'false'๊ฐ€ ๋  ๋•Œ ๊นŒ์ง€ while ๋ฌธ ์•ˆ์— ์žˆ๋Š” ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ๊ณ„์† ๋Œ์•„์„œ,
๊ฒฐ๊ตญ index๊ฐ€ 5๊ฐ€ ๋˜์–ด while ๋ฌธ์„ ๋น ์ ธ ๋‚˜์™€ ๋๋‚˜๊ฒŒ ๋œ๋‹ค.



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


โ–ท ์˜ต์…”๋„(Optional) 

- ๊ฐ’์ด ์žˆ์„ ์ˆ˜๋„ ์—†์„ ์ˆ˜ ์žˆ๋„ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

- ์˜ต์…”๋„์€ ?(๋ฌผ์Œํ‘œ)๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.
- ์˜ต์…”๋„ ํƒ€์ž…๋ผ๋ฆฌ์˜ ์—ฐ์‚ฐ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

// ์ถ•์•ฝ ํƒ€์ž… ํ‘œํ˜„๋ฒ•
var myFavoriteNum: Int? = 777
// ์ •์‹ ํƒ€์ž… ํ‘œํ˜„๋ฒ•
var myPetNames: Optional<String> = "๋‘๋ถ€์น˜์ฆˆ"

// ์˜ต์…”๋„ ํƒ€์ž…๋ผ๋ฆฌ ์—ฐ์‚ฐ ๋ถˆ๊ฐ€๋Šฅ
var numA: Int? = 5
var numB: Int? = 7

numA + numB  // Error ๋ฐœ์ƒ! → String๋„ ๋งˆ์ฐฌ๊ฐ€์ง€



โ–ท nil
๋ณ€์ˆ˜์— nil์„ ํ• ๋‹นํ•˜์—ฌ ๊ฐ’์ด ์—†๋Š” ์ƒํƒœ์˜ ์˜ต์…”๋„ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
(var petName: String?   // ์ด๋ ‡๊ฒŒ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์ž๋™์œผ๋กœ nil๋กœ ์„ค์ •๋œ๋‹ค.)


โ–ท ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ
- ์˜ต์…”๋„ ๊ฐ’์ด ๋นˆ๊ฐ’์ธ์ง€ ์กด์žฌํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•œ ํ›„, ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ ๊ฐ’์„ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ๋Œ€์ž…์‹œ์ผœ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

(์•ž์„œ ์ •๋ฆฌํ•ด๋†“์€ ๊ฒŒ์‹œ๊ธ€ ์ฐธ๊ณ )

2024.02.22 - [๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ] - Swift - Optional(์˜ต์…”๋„)_๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

 

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 →

yegenie-coding.tistory.com


โ–ท ์˜ต์…”๋„ ๋ณ€์ˆ˜ ๊ฐ’์ด nil์ธ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •(nil-coalescing)
- ?? (๋ฌผ์Œํ‘œ 2๊ฐœ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
- ?? ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„๊ฐ’์„ ๋ถ€์—ฌํ•œ ๋ณ€์ˆ˜๋Š” ์˜ต์…”๋„ ํƒ€์ž…์ด ์•„๋‹ˆ๋‹ค.

var likeNum: Int? = 5
let num = optNum ?? 8
print(num)   // ์ถœ๋ ฅ๊ฐ’: 5 → ์—ฌ๊ธฐ์„œ num์€ ์˜ต์…”๋„์ด ์•„๋‹Œ ๊ทธ๋ƒฅ Int ํƒ€์ž…์ž„
_________________________________________________________
optNum = nil
let num2 = optNum ?? 12
print(num)  // ์ถœ๋ ฅ๊ฐ’: 12  → ์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ทธ๋ƒฅ Int ํƒ€์ž…์ž„

 

 


Array / Set / Dictionary


โ–ท Array(๋ฐฐ์—ด)

- ๋™์ผํ•œ ํƒ€์ž…์˜ ์š”์†Œ๋“ค์„ ์ €์žฅํ•˜๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์ด๋‹ค.
- ํŠน์ • ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๋™์ ์œผ๋กœ ์กฐ์ ˆ๋œ๋‹ค.
- ์ธ๋ฑ์Šค(index)๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

- ์ฒ˜์Œ ์„ ์–ธํ•  ๋•Œ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฏธ๋ฆฌ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.



ex. <1 - ํƒ€์ž… ์ถ”๋ก ์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ>
var arrayA = [1, 2, 3]
var arrayB = [ ]   ← error! ํƒ€์ž… ์ถ”๋ก ์œผ๋กœ๋Š” ๋นˆ ๋ฐฐ์—ด ์ƒ์„ฑ์ด ๋ถˆ๊ฐ€ํ•จ.



ex. <2 - ํƒ€์ž… Annotation์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ>
var arrayC: [Int] = [1, 2, 3]
var arrayD: [Int] = [ ]  ← ๋นˆ ๋ฐฐ์—ด ์ƒ์„ฑ



ex. <3 - ์ƒ์„ฑ์ž๋กœ ์ƒ์„ฑํ•˜๊ธฐ>
var arrayE = Array<Int>()
var arrayF = [Int] ()
var arrayG = [Int](repeating: 0, count: 10)  ← ์ƒ์„ฑ๊ณผ ๋™์‹œ์— 10๊ฐœ element ์ƒ์„ฑ ๋ฐ 0์œผ๋กœ ์ดˆ๊ธฐํ™”



<์†์„ฑ์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ>
arrayA.first         // → Optional(1)
arrayA.last         // → Optional(3)



<Subscript๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ>
var arrayA = [1, 2, 3]
arrayA[0] = 10                                    // → [10, 2, 3]
arrayA[0...2] = [10, 20, 30]               // → [10, 20, 30]
arrayA[0...2] = [0]                              // → [0]
arrayA[0..<1] = [ ]                              // → [ ]



<replaceSubrange๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ(๋ฒ”์œ„)>
var arrrayB = [1, 2, 3]
arrayB.replaceSubrange(0...2, with: [10, 20, 30])           // → [10, 20, 30]
arrayB.replaceSubrange(0...2, with: [0])                          // → [0]
arrayB.replaceSubrange(0..<1, with: [ ])                          // → [ ]


<๋ฐฐ์—ด ์ •๋ ฌํ•˜๊ธฐ>
โ‘  sort : "์˜ค๋ฆ„์ฐจ์ˆœ"
โ‘ก sort + ํด๋กœ์ € : "๋‚ด๋ฆผ์ฐจ์ˆœ"
โ‘ข sorted : ์›๋ณธ์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ , "์˜ค๋ฆ„์ฐจ์ˆœ" ์ •๋ ฌ์˜ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋ฆฌํ„ด
โ‘ฃ sorted + ํด๋กœ์ € : ์›๋ณธ์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ , "๋‚ด๋ฆผ์ฐจ์ˆœ" ์ •๋ ฌ์˜ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋ฆฌํ„ด

ex)
let arrayA = [1, 5, 3, 8, 6, 10, 14]
arrayA.sort()                                                              // [1, 3, 5, 6, 8, 10, 14]
arrayA.sort(by: >)                                                     // → [14, 10, 8, 6, 5, 3, 1]
let sortedArray = arrayA.sorted()                           //  [1, 3, 5, 6, 8, 10, 14]
let sortedArray2 = arrayA.sorted(bt: >)                 // [14, 10, 8, 6, 5, 3, 1]


โ–ท Set(์„ธํŠธ)
- ์ง‘ํ•ฉ
- ์ˆœ์„œ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ๋™์ผํ•œ ํƒ€์ž…์˜ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
- ํ•ญ๋ชฉ์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํ•ญ๋ชฉ์ด ํ•œ ๋ฒˆ๋งŒ ํ‘œ์‹œ๋˜๋„๋ก ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ,
  ๋ฐฐ์—ด ๋Œ€์‹  ์ง‘ํ•ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
- ์„ธํŠธ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์€ ๊ณ ์œ ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

โ–ท Dictionary(๋”•์…”๋„ˆ๋ฆฌ)
- ์‚ฌ์ „
- ์ˆœ์„œ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ๊ฐ™์€ ํƒ€์ž…์˜ key์™€ ๊ฐ™์€ ํƒ€์ž…์˜ value๋ฅผ ์ €์žฅํ•œ๋‹ค.
โ‘  key๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์—†๋‹ค.
โ‘ก ๋ชจ๋“  key๋Š” ๊ฐ™์€ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค. 
โ‘ข ๋ชจ๋“  value๋Š” ๊ฐ™์€ ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค.
โ‘ฃ key์™€ value๋Š” ๋‹ค๋ฅธ ํƒ€์ž…์ด์–ด๋„ ๋œ๋‹ค.
- ์ˆœ์„œ๊ฐ€ ์•„๋‹Œ ์‹๋ณ„์ž ๊ธฐ์ค€์œผ๋กœ ๊ฐ’์„ ์ฐพ์„ ๋•Œ Dictionary๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

var baoFamily: [String: String] = ["name": "Fubao", "age": "Three"]
panda.keys       // → ["name", "age"]
panda.values    // → ["Fubao", "Three"]

panda.keys.sorted()       // → ["age", "name"]
panda.values.sorted()    // → ["Fubao", "Three"]
______________________________________________________________
// ํ•ด๋‹น key๊ฐ€ ์žˆ๋‹ค๋ฉด value๋ฅผ ๋ฎ์–ด์“ฐ๊ณ , ๊ธฐ์กด์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜
let newPanda = panda.updateValue("Hello Aibao", forKey: "name")

print(newPanda)            // → Optional("Fubao")
print(panda["name"])     // → Optional("Hello Aibao")
______________________________________________________________
// ํ•ด๋‹น key๊ฐ€ ์—†๋‹ค๋ฉด ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” value์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ณ , nil์„ ๋ฐ˜ํ™˜
panda["address"] = "์šฉ์ธ์‹œ"
panda["address"] = nil
let newAddress = panda.updateValue("Hello Everland", forKey: "address")

print(newAddress)                  // → nil
print(panda["address"])          // → Optional("Hello Everland")

 

728x90