본문 바로가기
■ 문법 ■/Swift

02 옵셔널 변수, 데이트 피커, 델리게이트(delegate)

by Try Coding 2019. 11. 28.

스위프트 코드를 입력하다 보면 변수 선언에 ? 를 볼 수 있는데 

이 '?' 를 삭제하면 에러가 발생한다.

 

Swift에 존재하는 옵셔널이라는 개념은 어떤 값이 존재하지 않는다는 것을 나타날 때 사용한다 

변수가 nil(null) 이거나 값의 존재 여부를 알 수 없다는 의미이다 

스위프트에서는 변수를 선언할 때 변수에 반드시 nil이 아닌 값을 할당해야 하지만 옵셔널 타입을 사용해서 변수에 값이 없다는 것을 알릴 수 있다. 

 

옵셔널로 선언된 변수에 값이 할당되면 그 값은 '옵셔널에 래핑(wrapped)되었다'고 한다.

이 값은 '!'를 사용하여 강제언래핑(force unwrapping) 하여 값에 접근할 수 있다.

 

1
2
3
4
5
6
7
8
9
10
var test: Int?
 
test = 3
 
if test !=nil{
    print(test!)
}
 
 
 
 

또한 옵셔널은 암묵적인 언래핑이 되도록 선언이 가능한데 이 때 강제언래핑을 사용하지 않아도 값을 사용할 수 있다.

 

1
2
3
4
5
6
7
8
9
var test2: Int!
 
test2 = 3
 
if test2 !=nil{
 
   print(test2)
 
}
 

 

 

 

- Tip - 

 

Swift4 에서는  #selector()의 인자로 사용될 메서드를 선언할 때 Objective-C와의 호환성을 위하여 함수 앞에 반드시

@objc 키워드를 붙여야 한다. 

 

 

 

delegate   

델리게이트(delegate)는 대리자라고도 하며 누군가 해야 할 일을 대신 해주는 역할을 한다.

예를 들어 특적 객체 A와의 상호작용을 할 때 메시지를 넘기면 그 메시지에 대한 책임은 델리게이트로 위임된다. 

그리고 델리게이트 메서드는 해당 역할을 수행하며 처리 결과나 메시지등을 받는다. 즉, 사용자가 객체를 터치했을 때 해야 할 일을 델리게이트 메서드로 구현하고 해당 객체가 터치되었을 때 델리게이트가 호출되어 위임받는 일을 하게 되는것이다. 

 

 

 

Swift 문법 for 루프

 

for 변수 in Range {

 

}

 

 

EX

for i in 0...9 {

  print(i)

 

for i in 0..<10{

  print(i)

}

댓글