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

5์ฃผ์ฐจ_iOS ์•ฑ ๊ฐœ๋ฐœ ์ž…๋ฌธ_4์ผ์ฐจ_TIL

yeggrrr๐Ÿผ 2024. 3. 28. 20:37
728x90


<TIL>
์˜ค๋Š˜์€ swift ๋ฌธ๋ฒ• ๊ณต๋ถ€์™€ todoList ๋งŒ๋“ค๊ธฐ์—์„œ
ํ•„์ˆ˜ ๊ตฌํ˜„ ์ด์™ธ์— ์ถ”๊ฐ€๋กœ ๊ตฌํ˜„ํ•ด ๋ณด๊ณ  ์‹ถ์€ ๋‚ด์šฉ ์‹œ๋„ํ•ด ๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

todoList ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์–ด์„œ
UserDefault์— ๋Œ€ํ•ด์„œ ์ฐพ์•„๋ดค๋Š”๋ฐ,

struct ํƒ€์ž…์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ณต์žกํ•ด์„œ
์‹œ๋„๋งŒ ํ•ด๋ณด๊ณ , ์™„์„ฑ์€ ๋ชปํ–ˆ๋‹ค..๐Ÿ˜ญ

๋Œ€์‹ ์— Int ํƒ€์ž…์ด๋‚˜ ๋ฌธ์ž์—ด ๋ฐฐ์—ด ํƒ€์ž…์„ ์ €์žฅํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด๋ดค๋‹ค.

UserDefault๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š”
๋‚˜์ค‘์— ๊ณต๋ถ€๋ฅผ ์ข€ ๋” ํ•ด๋ณด๊ณ  ์ •๋ฆฌํ•˜๋ ค ํ•œ๋‹ค.

์˜ค๋Š˜์€ ๊ณต๋ถ€ํ–ˆ๋˜ Swift ๋ฌธ๋ฒ• ๊ด€๋ จํ•ด์„œ
๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค.  



components & split

components

์ฃผ์–ด์ง„ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ(separator)๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์ˆ˜์‹ ์ž์˜ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์Œ.. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ๋ฌธ์ž์—ด์„ ํ•ด๋‹น separator๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ชผ๊ฐœ์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด, ๋ฐ”๋กœ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ• ๊ฑฐ๋‹ค!

์‚ฌ์šฉํ•œ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ๊ฐœ์˜ separator๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค!

split

spilt๋„ components์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŠน์ • ๋ฌธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ชผ๊ฐค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ์™œ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ•จ์ˆ˜์ธ๋ฐ ์™œ ๋‘ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•ด๋†จ์„๊นŒ?๐Ÿง
components์™€ spilt์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!


์ฒซ ๋ฒˆ์งธ, ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Components๋Š” 'import Foundation’์„ ์„ ์–ธํ•ด์•ผํ•จ
๋ฐ˜๋ฉด์—, split๋Š” ํ•„์š”์—†์Œ

๋‘ ๋ฒˆ์งธ, ๋ฆฌํ„ด๊ฐ’

Components์˜ ๋ฆฌํ„ด๊ฐ’ -> [String] 
split์˜ ๋ฆฌํ„ด๊ฐ’ -> [SubString]

์„ธ ๋ฒˆ์งธ, ์ธ์ž์ˆ˜

Components : ’separatedBy’
split : 'separator’, ‘maxSplits’, ‘omittingEmptySubsequences’

๋„ค ๋ฒˆ์งธ, ๋นˆ๋ฐฐ์—ด ํฌํ•จ ๋ฆฌํ„ด ์—ฌ๋ถ€

Components๋Š” separator๊ฐ€ ์—ฐ์†์œผ๋กœ ๋“ฑ์žฅํ•œ ๊ฒฝ์šฐ ๋นˆ๋ฌธ์ž์—ด ํ•จ๊ป˜ ๋ฆฌํ„ด
(๋‹จ, ๋นˆ๋ฌธ์ž์—ด ์—†์• ๋Š” ์ถ”๊ฐ€์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•จ)

split๋Š” ‘omittingEmptySubsequences’๋ผ๋Š” ์ธ์ž์˜ ๊ธฐ๋ณธ๊ฐ’์ด true ์ธ๋ฐ, ์ด
๊ฒŒ ๋ฐ”๋กœ ๋นˆ๋ฌธ์ž์—ด์„ ๊ฑธ๋Ÿฌ์ค„์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•จ


์ด๋ ‡๊ฒŒ ํฌ๊ฒŒ 4๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ ๋ฆฌํ„ด๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ!
(๊ทธ๋ž˜์„œ ๋‘ ๊ฐ’์„ ์„œ๋กœ ๋น„๊ตํ•  ๋•Œ, error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.)



<componets & split ํ•œ ๋ˆˆ์— ์ •๋ฆฌํ•˜๊ธฐ>



sort & sorted

sort๋Š” ์ •๋ ฌ์„ ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค!
sort(), sort(by: ), sorted(), sorted(by:) ๊ฐ€ ์žˆ๋‹ค.

sort( )


sort() ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์‹œํ‚ค๋Š” ํ•จ์ˆ˜์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ‘์ œ์ž๋ฆฌ์—์„œ(in place)’ ์ •๋ ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ„ด๊ฐ’์ด ์—†๋‹ค.



var numbers: [Int] = [3, 2 ,4, 1, 6, 5, 7, 8]
var words: [String] = [“Brain”, “Apple”, “Camera”, “Evening”, “Door”, “Fail”, “Guess”]

<↑์˜ˆ์‹œ๋กœ ์‚ฌ์šฉํ•  ์ •์ˆ˜ ๋ฐฐ์—ด & ๋ฌธ์ž์—ด ๋ฐฐ์—ด↑>

numbers.sort()
words,sort()
print(numbers)
print(words)

-> ๊ฒฐ๊ณผ: [“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”]
-> ๊ฒฐ๊ณผ: [“Apple”, “Brain”, “Camera”, “Door”, “Evening”, “Fail”, “Guess”]

sort(by: )

์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ •๋ ฌ์„ ์ปค์Šคํ…€ํ•ด์ฃผ๊ณ  ์‹ถ์„ ๋•Œ๋Š”, ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
by ๋’ค์— ๋ถ€๋“ฑํ˜ธ๋ฅผ ํ†ตํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ, ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

numbers.sort(by: >)
words.sort(by: <)

-> ๊ฒฐ๊ณผ: [“8”, “7”, “6”, “5”, “4”, “3”, “2”, “1”]
-> ๊ฒฐ๊ณผ: [“Apple”, “Brain”, “Camera”, “Door”, “Evening”, “Fail”, “Guess”]

โœ”๏ธ (
by: ) ์ด๋ ‡๊ฒŒ ํด๋กœ์ € ํ˜•ํƒœ๋กœ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ๋น„๊ต ์กฐ๊ฑด์„ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค!

numbers.sort { aStart, Bstart in aStart < bStart }

์ด๋ ‡๊ฒŒ ์จ๋„ ๋˜๊ณ !!
numbers.sort(by: <) ์ด๋ ‡๊ฒŒ ์จ๋„ ๋œ๋‹ค.

์ปค์Šคํ…€ ์ •๋ ฌ ์กฐ๊ฑด์˜ ๊ฒฝ์šฐ์—๋Š” ์œ„ ์™€ ๊ฐ™์ด ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์„ฑํ•˜๊ธฐ ์ข€ ๋” ์‰ฌ์šธ ๊ฒƒ ๊ฐ™๋‹ค!!




sorted( )

sorted( )๋Š” sort( ) ์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฆฌํ„ด๊ฐ’์ด ์žˆ๋‹ค.

์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ!๐Ÿง

sort( )๋Š” ๋ฆฌํ„ด๊ฐ’์ด ์—†๊ณ , ์ œ์ž๋ฆฌ ์ •๋ ฌ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, sorted()๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์ •๋ ฌํ•œ ์›์†Œ๋“ค์˜ sequence๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์—!!
์›๋ณธ ๋ฐฐ์—ด์ด ๊ทธ๋Œ€๋กœ ์กด์žฌํ•œ๋‹ค.

๊ทธ๋ž˜์„œ sorted()๋Š” ์•„๋ž˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋” ์„ ์–ธํ•ด์•ผํ•œ๋‹ค.
(์ด๋ ‡๊ฒŒ ๋ฆฌํ„ด๊ฐ’์„ numbers์— ๋Œ€์ž…ํ•ด์ค˜์•ผํ•จ)

numbers = numbers.sorted()

 

sorted(by: )

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ sort(by: )์™€ ์ฐจ์ด์ ์€ ๋ฆฌํ„ด๊ฐ’์˜ ์œ ๋ฌด์ด๋‹ค!
sorted(by: ) ๋˜ํ•œ by ๋’ค์— ๋ถ€๋“ฑํ˜ธ๋ฅผ ๋„ฃ์–ด ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.



<sort & sorted ํ•œ ๋ˆˆ์— ์ •๋ฆฌํ•˜๊ธฐ>



 

728x90