티스토리 뷰
Swift는 IOS어플리케이션 제작을 하는데 필요한 언어이며, 안드로이드에서는 JAVA와 Kotlin을 사용하고있다.
Swift도 Kotlin과 같이 처음부터 짜쟌~하고 나타난 언어가 아니다. Swift가 생긴지는 약 4년정도 되었고 그전에는 Objective-C를 이용하여 IOS어플리케이션을 제작하였다.
그만큼 Objective-C에서 불편하였던 각종 코드들이 좀더 간결하고 파워풀하게 나타났다고 개인적으로 생각한다.
1. Swift 변수 선언
스위프트에서 변수를 생성하려면 var, let 키워드를 사용한다.
기본적인 형태는 var [변수명]: [데이터 타입] = [값]의 형태 이다. 또한, let도 같은 형태로 사용할 수 있다.
var : 변수선언, let : 상수선언 을 할때 사용을 한다.
let은 JAVA에서 final로 생각하면된다. 중력가속도G ,원주율 PI와 같이 변하지 않는 수를 지정할때 사용한다.
또한, 다음과 같이 데이터 타입을 지정하지 않아 타입을 추정할 수 있다.
Swift에서는 타입을 지정하지 않으면 지정한 변수의 값을 보고 자동으로 타입을 추정한다.
변수 이름 짓는 법
1. 일반변수, 함수이름 : 영소문자로 시작
2. 클래스, 구조체, 열거형 : 영대문자로 시작
3. Carmel Texting : 영대문자, 영소문자를 섞어서 사용 EX)countOfStudents
2. 문자열 보간
문자열 보간이란 문자열안에 변수를 넣어서 출력하는것이다.
Python, C, Java에서는 문자열안에 변수를 넣기 위해서 ,을 이용하거나 %d,%s 와 같이 데이터 타입을 지정하여서 문자열 안에 변수를 나타내곤 하였다.
하지만 Swift에서는 문자열 보간을 통해서 보다 쉽게 문자열안에서 변수를 불러서 출력 할 수 있어, 보다 가독성을 높일 수 있고 편리하다.
다음과 같이 print문안에 \(변수명)을 넣어주어 사용가능하다.
또한 , 를 이용하여서도 사용이 가능하다.
3. 데이터 타입
Swift에서는 기본자료형 (타입)은 구조체로 설계되어있다.
Int, UInt(-값이 없는 수), Float, Double, Bool, Character, String 그리고 Any, AnyObject가 있다.
Int - 정수 타입, + - 부호를 포함한 정수
UInt - 0을 포함하고 - 부호를 포함하지 않는 양의 정수
Float - 실수형(4Byte)
Double - 실수형(8Byte)
Bool - 논리형(1Byte) true, false 만 존재함 단! true, false는 0,1로 표현 불가
character - 문자형(2Byte, 유니코드 지원) UTF - 8 (한글, 이모티콘으로 변수를 지정할 수 있다. 하지만 가독성의 문제로 사용을 지양한다.
String - 문자열
3.1. Any, AnyObject, nil
Any 타입 - 모든 데이터타입을 담을 수 있다.
Any타입은 모든 데이터 타입을 담을 수 있어 myAny 변수에 정수,문자,Bool 등의 다양한 데이터 타입 자유자재로 바꿔가면서 사용할 수 있다.
AnyObject 타입 - 모든 클래스 타입을 담을 수 있다.
nil - 다른언어에서 Null과 같이 비어있다 라는 의미를 갖는다.
변수 또는 상수에 값이 없는 경우, 즉 nil이면 해당 변수 또는 상수에 접근했을 때 잘못된 메모리 접근으로 런타이 오류가 발생합니다. 잘못된 메모리에 접근하여 발생하는 런타임 오류중 흔히 널 포인트 익셉션 (Null Point Exception)이라고 불리는(1) 오류 상황에 대비하여 옵셔널(optional)을 이용하여 런타임 오류를 방지할 수 있다.
- 야곰의 스위프트 프로그래밍 2탄 _ 3장 데이터 타입 기본 (83페이지)
4. Optional (옵셔널)
옵셔널은 가장많은 오류가 발생하는 NullException 발생빈도를 줄이고자 만든 것이다.
JAVA에서 Null을 체크하기 위해서는 다음과 같이 체크하였다.
Swift에서는 옵셔널을 이용하여서 Null Exception을 피할 수 있따.
우선은 옵셔널 변수를 선언 해보자
nil은 옵셔널로 선언된 곳에만 사용할 수있다. 옵셔널 변수 또는 상수 등은 데이터 타입 뒤에 물음표를 붙여 표현해준다.
이후 옵셔널 변수를 안전하게 사용하기 위해서는 옵셔널 바인딩(if let구문)을 이용하여 nil체크를 해야한다.
코드는 간단하다.
myNullable 변수에는 값이 있을 수도 있고 없을 수도 있어 옵셔널 변수로 지정하고 이후에 myNullable 변수에 10이라는 정수를 넣어준다.
그리고 아래 if let 구문을 이용하여서 새로운 변수를 만들어 주고 nil 체크를 하게된다.
myNullable 변수는 지금 nil이 아니기 때문에 널이 아님, 10 이라는 값이 출력 된다.
여기서 if let 구문을 이용하여서 myNullable의 값을 빼왔지만 if let 구문이 없다면 Optional(10)이라고 래핑되어서 출력된다.
이렇게 래핑 되어 있는것을 언래핑 할려면 강제 언래핑(Force unwrapping)을 이용하여 값을 빼올 수 있다.
그때는 !연산자를 이용하면된다.
다음과 같이 변수명 끝에 !를 붙여 줌으로써 값을 빼올 수 있다.