Moon Work

[Swift] Swift 기본 문법 정리 1: Xcode Setting, types 본문

Swift

[Swift] Swift 기본 문법 정리 1: Xcode Setting, types

moonkey 2022. 12. 15. 14:56

Mac에서 Swift 시작하기

mac에서 ios 개발을 위해서는 기본적으로 맥북에 제공되는 xcode를 통해 가능하다. (없는 경우 앱스토어에서 다운로드)

Create a new Xcode project를 클릭한뒤, 상단 바에서 File - New - Playground로 들어가서 Blank 파일을 클릭해준다. (일단 문법만 배울 것이기 때문에)

좌측 하단에 + 버튼을 클릭해서 새로운 폴더 / 파일을 만들 수 있다.

 


 

Swift 기본 문법

 

상수, 변수

  • swift에서 띄어쓰기는 매우 중요하다. 변수 이름 뒤에 띄어쓰기를 꼭 해주어야 한다.
  • swift는 타입에 매우 민감한 언어이다. 
  • ES6와는 반대로 var의 경우 변수로 사용하고 let의 경우 상수로 사용한다. 

 

var 변수이름: 타입 = 값
let 변수이름: 타입 = 값

 

기본 타입

  • Bool
    - true, false가 올 수 있다.
    - 0,1이 다른 언어에서 true, false를 나타내는 경우도 있지만 swift에서는 Bool타입에 할당할 수 없다.
  • Int: 정수형 타입
  • UInt: 양수의 정수형 타입
  • Float: 실수형 타입, 소수점 6자리까지 가능하다
  • Double: 실수형 타입, 소수점 15자리까지 가능하다. (Float와 Double 모두 사용가능한 상황에서는 Double이 선호된다. Swift Docs )
  • Character: 문자
  • String: 문자열
  • Any: 모든 타입을 수용 가능
  • AnyObject: 모든 클래스타입을 수용 가능
  • nil
    - nil은 아무 타입에나 들어갈 수 없다. 아래와 같이 String 타입의 변수에 nil을 할당하게 된다면 다음과 같이 런타임 에러가 발생하는 것을 확인할 수 있다. 
    - nil은 없음을 뜻하는 키워드이기 때문에 다른 언어들의 null 과 같이 아무곳에나 들어갈 수 없고 Optional상황에서 사용할 수 있다. 
    - Optional 상황은 아래에 더 자세히 나오지만 이 값이 있을수도 있고 없을수도 있음을 나타내는데 이때 "없는 상황"을 나타내기 위해 nil을 사용할 수 있다. 

다른 타입에 nil을 적용한 경우
optioanl을 사용해 해당 변수의 값이 있을수도 있고 없을 수도 있음을 나타낸 경우

let boolValue: Bool = true
let intValue: Int = -1
let uintValue: UInt = 3
let floatValue: Float = 2.344
let doubleValue: Double = 2.525961
let characterValue: Character = "a" //항상 큰따옴표로 사용
let stringValue: String = "austin"

 

컬렉션 타입

Array: 순서가 있는 리스트 컬렉션

선언: 아래 방법들 모두 Array 컬렉션 생성 가능

var intArr1: Array<Int> = Array<Int>()
var intArr2: Array<Int> = [Int]()
var intArr3: [Int] = [Int]()

내장함수들

intValues.append(1)
intValues.containes(1)
intValues.remote(at:4)
intValues.removeLast()
intValues.removeAll()
intValues.count

 

Dictionary: 키:값의 쌍으로 이루어진 컬렉션

선언: 아래 방법들 모두 Dictionary 컬렉션 생성 가능, 각각의 쌍의 타입으로 선언

var dictionaryCollection1: Dictionary<Int, String> = [Int, String]()
var dictionaryCollection2: [String, String] = [:]

할당 및 내장함수

  • Dictionary의 사용은 기존 ES6등에서 사용하던 Object와 매우 다른 차이점이 있었다. Dictionary는 기본 전재로 안에 들어있는 key의 값이 nil일 수 있음을 전재하고 있었다. 
  • 위에 기본 타입에서 String에 nil을 할당할 경우 여지없이 에러가 발생한다. 하지만 dictionary 에 특정 key에 nil을 할당하게 될 경우 어떤 에러도 발생하지 않는다. 따라서 Dictaionary의 값을 가져올 때는 반드시 nil 체크를 해야한다는 점을 염두해둬야겠다. 
//할당
dictionaryCollection["keyName"] = "value"
//사용
//아래와 같이 사용할 경우 타입 에러가 발생
var dicValue: String = dictionaryCollection["keyName"] 
//optional 사용
var dicValue: String? = dictionaryCollection["keyName"] 

//내장함수
dictionaryCollectoin.removeValue(forKey: "keyName")
dictionaryCollectoin["keyName"] = nil

 

Set: 순서가 없고 중복이 없는 컬렉션

선언: 오직 아래의 방법으로 선언이 가능하다.

var stringSet: Set<String> = Set<String>()

내장함수

//추가
stringSet.insert("value1")
//포함되어있는지
stringSet.containes("value1")
//특정 값 제거
stringSet.remove("value1")
//첫번째 값 제거
stringSet.removeFirst()
//set의 길이
stringSet.count
//다른 set과 합
setA.union(setB)
//다른 set과 교집합
setA.intersection(setB)
//다른 set과 차집합
setA.substract(setB)
//Set을 정렬해서 Array 컬렉션 타입으로 리턴
setA.sorted()