πŸ‘©πŸ»‍πŸ’»/Swift

11. μ˜΅μ…”λ„ μΆ”μΆœ - iOS ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ μŠ€μœ„ν”„νŠΈ 기초

reujusong 2020. 6. 17. 17:50

 - μ˜΅μ…”λ„ μΆ”μΆœμ΄λž€?

  • μ˜΅μ…”λ„μ— λ“€μ–΄μžˆλŠ” 값을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ κΊΌλ‚΄μ˜€λŠ” 것

 

 - μ˜΅μ…”λ„ 방식

  • μ˜΅μ…”λ„ 바인딩

1. nil 체크 + μ•ˆμ „ν•œ μΆ”μΆœ
2. μ˜΅μ…”λ„ μ•ˆμ— 값이 λ“€μ–΄μžˆλŠ”μ§€ ν™•μΈν•˜κ³  값이 있으면 값을 κΊΌλ‚΄μ˜¨λ‹€.
3. if-let 방식 μ‚¬μš©

 

func printName(_ name: String) {
    print(name)
}

var myName: String? = nil

//printName(myName)
// μ „λ‹¬λ˜λŠ” κ°’μ˜ νƒ€μž…μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 컴파일 였λ₯˜λ°œμƒ

if let name: String = myName {
    printName(name)
} else {
    print("myName == nil")
}


var yourName: String! = nil

if let name: String = yourName {
    printName(name)
} else {
    print("yourName == nil")
}

// name μƒμˆ˜λŠ” if-let ꡬ문 λ‚΄μ—μ„œλ§Œ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€
// μƒμˆ˜ μ‚¬μš©λ²”μœ„λ₯Ό 벗어났기 λ•Œλ¬Έμ— 컴파일 였λ₯˜ λ°œμƒ
//printName(name)


// ,λ₯Ό μ‚¬μš©ν•΄ ν•œ λ²ˆμ— μ—¬λŸ¬ μ˜΅μ…”λ„μ„ 바인딩 ν•  수 μžˆλ‹€
// λͺ¨λ“  μ˜΅μ…”λ„μ— 값이 μžˆμ„ λ•Œλ§Œ λ™μž‘ν•œλ‹€
myName = "kdgt"
yourName = nil

if let name = myName, let friend = yourName {
    print("\(name) and \(friend)")
}
// yourName이 nil이기 λ•Œλ¬Έμ— μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€
yourName = "hana"

if let name = myName, let friend = yourName {
    print("\(name) and \(friend)")
}
// kdgt and hana

 

 

  • κ°•μ œ μΆ”μΆœ : μ˜΅μ…”널에 값이 λ“€μ–΄μžˆλŠ”μ§€ μ•„λ‹Œμ§€ ν™•μΈν•˜μ§€ μ•Šκ³  κ°•μ œλ‘œ 값을 κΊΌλ‚΄λŠ” 방식, λ§Œμ•½ 값이 없을 경우(nil) λŸ°νƒ€μž„ 였λ₯˜κ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— μΆ”μ²œX
var myName: String? = kdgt
var youName: String! = nil


printName(myName!) // kdgt
myName = nil

//print(myName!)
// κ°•μ œμΆ”μΆœμ‹œ 값이 μ—†μœΌλ―€λ‘œ λŸ°νƒ€μž„ 였λ₯˜ λ°œμƒ
yourName = nil

//printName(yourName)
// nil 값이 μ „λ‹¬λ˜κΈ° λ•Œλ¬Έμ— λŸ°νƒ€μž„ 였λ₯˜λ°œμƒ