๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
3๏ธโƒฃ Swift/Swift ์ •๋ฆฌ

[Swift] nil ์ •๋ฆฌ (feat.NULL)

by seolhee2750 2021. 6. 7.

์Šค์œ„ํ”„ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  nil์ด๋ž€ ๋‹จ์–ด๋ฅผ ์ฒ˜์Œ ๋“ค์–ด๋ดค๋Š”๋ฐ, ๊ทธ๋ƒฅ NULL์ด๋ž‘ ๋น„์Šทํ•ด๋ณด์˜€๋‹ค,,

๊ทผ๋ฐ ์ž์„ธํžˆ ์ฐพ์•„๋ณด๋‹ˆ NULL๊ณผ๋Š” ์—„์—ฐํžˆ ๋‹ค๋ฅธ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ,,์ด๋ผ๋Š”,,,,

๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—๋Š” NULL๊ณผ์˜ ์ฐจ์ด์ ์„ ์ฒดํฌํ•˜๋ฉฐ nil์˜ ํ™•์‹คํ•œ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

๐Ÿ“Ž nil

nil์€ '๊ฐ’์ด ์—†์Œ'์„ ๋œปํ•œ๋‹ค.

2021.06.06 - [๐Ÿ“ Swift Note] - [Swift] Optional(์˜ต์…”๋„) ์ •๋ฆฌ

 

[Swift] Optional(์˜ต์…”๋„) ์ •๋ฆฌ

์Šค์œ„ํ”„ํŠธ ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค ๋ณด๋‹ˆ ?, ๊ทธ๋ฆฌ๊ณ  ! ์ด๋Ÿฐ ๋ฌธ์žฅ ๋ถ€ํ˜ธ๋“ค์ด ๋“ฑ์žฅํ•œ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ค‘ ?์— ๋Œ€ํ•ด ๋จผ์ € ์„ค๋ช…ํ•ด ๋ณด๋ ค ํ•œ๋‹ค. ๐Ÿ“Ž ์˜ต์…”๋„ ์Šค์œ„ํ”„ํŠธ๊ฐ€ ๊ฐ€์ง€๋Š” ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•์œผ๋กœ ์•ˆ์ „์„ฑ์ด ์žˆ๋‹ค. ์˜ต์…”๋„์€

seolhee2750.tistory.com

์ด์ „์— ์ž‘์„ฑํ•œ ์˜ต์…”๋„ ์ •๋ฆฌ ๊ธ€์—์„œ ๊ฐ„๋‹จํžˆ ์–ธ๊ธ‰ํ–ˆ์—ˆ๋Š”๋ฐ, 

๋ฌธ์ž์—ด ""๋‚˜, ์ˆซ์ž 0์€ ์—„์—ฐํžˆ ์กด์žฌํ•˜๋Š” ๊ฐ’์ด์ง€๋งŒ nil์€ ์ •๋ง ๊ฐ’์ด ์—†๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๊ทธ๋ƒฅ ๊ฐ’์ด ์—†๋‹ค๊ณ  ํ•˜๋ฉด, NULL๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‘˜์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.

 

 โœ๏ธ NULL 

NULL์€ C์—์„œ ์“ฐ์ด๋Š” ๊ฒƒ์œผ๋กœ, ์–ด๋– ํ•œ ๊ฐ’๋„ ๊ฐ€์ง€์ง€ ์•Š๊ณ  ์žˆ๋‹ค๋Š” ๋œป!

๋„์€ ๋นˆ์นธ๊ณผ๋„ ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ, ์ด์šฉํ•  ์ˆ˜ ์—†๋Š”, ํ• ๋‹น๋˜์ง€ ์•Š์€, ์ ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

์ข€ ๋” 'C์ ์œผ๋กœ' ๋งํ•˜๋ฉด, ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ‘‰ C ์–ธ์–ด์˜ Pointer ๊ฐ’์˜ ๋ถ€์žฌ!

 

 โœ๏ธ nil 

nil์€ Objective-C, Swift์—์„œ ์“ฐ์ด๋Š” ๊ฒƒ์œผ๋กœ, ๋‹จ์ˆœํ•œ ์˜๋ฏธ์—์„œ๋Š” NULL๊ณผ ์œ ์‚ฌํ•˜๋‹ค.

ํ•˜์ง€๋งŒ '์–ด๋–ค'๊ฐ’์ด ์—†๋Š๋ƒ๊ฐ€ ์ค‘์š”ํ•˜๊ฒ ๋‹ค.

 

Objective-C์˜ nil์€ Objective-C ๊ฐ์ฒด์˜ ํด๋ž˜์Šค์˜ ๋ถ€์žฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ ,

Swif์˜ nil ๊ฐ’์˜ ๊ฒฝ์šฐ์—๋Š” Objective-C ๊ฐ์ฒด์˜ ๋ถ€์žฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์œ„์˜ ์ด์•ผ๊ธฐ๊ฐ€ ์กฐ๊ธˆ ์–ด๋ ต๊ฒŒ ๋“ค๋ฆฐ๋‹ค๋ฉด,

 

Objective-C์—์„œ์˜ nil์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๊ณ ,

Swift์—์„œ์˜ nil์€ ํฌ์ธํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋‹จ์ง€ ํŠน์ • ํƒ€์ž…์— ๋Œ€ํ•œ ๊ฐ’์˜ ๋ถ€์žฌ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰ Swift์—์„œ๋Š” ํŠน์ • ํƒ€์ž…์— ๋Œ€ํ•œ ๊ฐ’์˜ ๋ถ€์žฌ๋ฅผ ํ‘œํ˜„!

 

[ nil ์‚ฌ์šฉ ์˜ˆ์ œ ]

import Foundation

let str1 = "123a"
let str2 = "123"

print(Int(str1) == nil ? 0 : 1)
print(Int(str2) == nil ? 0 : 1)

๊ฐ„๋‹จํ•˜๊ฒŒ nil์˜ ๊ฐœ๋…์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์•˜๋‹ค.

๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์„ ์„ ์–ธํ•˜๊ณ 

ํ•ด๋‹น ๋ฌธ์ž์—ด์ด nil ๊ฐ’์„ ๊ฐ€์ง€๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ์ฝ”๋“œ์ด๋ฉฐ, ๋‹ค์Œ์€ ์œ„ ์ฝ”๋“œ์˜ ์ถœ๋ ฅ ๊ฒฐ๊ณผ์ด๋‹ค.

์ถœ๋ ฅ ๊ฒฐ๊ณผ

-> ๋ฌธ์ž์—ด์„ Intํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ,

Intํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ str1์˜ ๊ฒฝ์šฐ์—๋Š” 0์„ ์ถœ๋ ฅํ•˜๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


๐ŸŒŸ ์ •๋ฆฌ ๐ŸŒŸ

Swift์—์„œ nil์€ ํŠน์ • ํƒ€์ž…์— ๋Œ€ํ•œ ๊ฐ’์˜ ๋ถ€์žฌ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, NULL๊ณผ๋Š” ๋‹ค๋ฅธ ๋œป์„ ๊ฐ€์ง„๋‹ค.

 


 

์ฐธ๊ณ 

 

๋Œ“๊ธ€