Developing iOS10 Apps with Swift ; 1강~3강
1. 세미콜론이 필요없는 swift
스위프트에서 명령어 뒤에 ; (세미콜론)은 안 붙여도 된다!
세미코론 빠뜨려서 에러났던 기억들이여 안녕..
대신, 구문 구분시 엔터는 필수!
2. let : 상수(변치 않을 값) 선언
스위프트에서 상수 선언은 let으로!
즉, array나 dictionary를 let을 선언해서 사용하게 된다면
추후 추가로 들어가거나 빼낼 수 없다는 걸 의미 한다.
3. optional type (어려움 ㅠㅠ)
3-1. not set ; nil로 표현
( 값이 없음 0도 아님.
set되지 않은 상태에서는 associated된 값도 없음)
3-2. set ; associated된 값을 가지고 있음
강의 중
Main.storyboard에서 만든 숫자 3 버튼생성 후, 클릭하고
그 값을 digit라는 변수로 받아서 console로 출력하는 코드를 보면 ,
let digit = sender.currentTitle
print("touched \(digit) digit")
이 코드에서 currentTitle에 option + 좌클릭하면
var currentTitle : String?
(swift는 항상 타입을 자동으로 추정하는데, 이는 코드를 간편하게 해줌. )
라고 되어있는데,
이는 optional타입인데, associated된 값이 String이란 뜻이다.
(값이 set되지 않을 경우를 대비해서 set해 주는 것이다.)
위에 코드로는,
console 창에 버튼을 눌러 출력했을때,
“touched (optional)3 digit”라고 "optional"이 붙어서 출력이 된다.
만약, digit에 값이 없다면, (화면 버튼에서 숫자를 지움)
그냥 “nil” 이라고 출력된다.
이를 수정하고자, unwrapping을 해주면 된다.
let digit = sender.currentTitle!
선언하면 되는데,
digit에 값이 있다면(화면 버튼에서 숫자 존재) optional이란 글자는 사라진다.
“touched 3 digit” 라고 출력된다.
하지만, 값이 없다면(화면 버튼에서 숫자 지움) 에러를 낸다.
다시 한 번 정리하자면,
! 강제적으로 associated된 값을 가지고 오는데,
!로 된 값을 가져올때 값이 없다면? 이때 에러가 나는 것이다.
(강의에서는 앱이 크러쉬 된다고 표현하였다.)
에러를 내는것과 안내는 것은 개발자 성향의 차이 일수 있으나,
강의에서 교수님이 말씀하신것처럼 사용자가 에러를 겪기 전에
에러를 개발자가 확인할 수 있게 ! 를 선언해서 사용하는 것도 하나의 방법이다.
에러 난 줄 모르고 한참 사용하다가 나중에 치명타로 돌아올 수 있으니,
반드시 값이 요구되어야 한다면, 에러를 감수 하더라도 적절하게 사용하자는 것이다.