티스토리 뷰

카테고리 없음

Swift 기본

지용빡 2022. 1. 27. 20:42
반응형
상수와 변수 (Constants and Variables)
  • 상수와 변수는 특정타입의 값을 의미한다.
  • 상수는 값을 지정 후 변경이 불가능하다.
  • 변수는 값 지정 후 변경이 가능하다.
// 선언 방식
let sampleL: String = "나 상수" // 값 변경 불가능
var sampleV: String = "나 변수" // 값 변경 가능

var sampleI = 0 // 타입 추론

 

Type Safety
  • Swift는 type-safe 언어이다.
  • 코드를 컴파일 할 때 타입 검사를 수행하고 일치하지 않는 타입을 오류로 표시한다.
    • 이를 통해 개발 단계에서 가능한 빨리 오류를 포착하고 수정이 가능하다.
  • 아래 예제처럼 Bool이 아닌 값이 Bool로 대체되는 것을 방지한다.
let yes: Bool = true
let num: Int = 1

if yes {
// 컴파일 성공
}

if num {
// 컴파일 에러
}

if num == 1 {
// 컴파일 성공
}
타입 별칭(Type Aliases)
  • 이미 존재하는 타입을 다른 이름으로 정의한다.
  • 외부 소스에서 특정 크기의 데이터로 작업할 때와 같이 상황에 맞는 이름으로 기존 타입을 참조하려는 경우에 유용하다.
typealias sample = UInt16

// 타입 별칭을 정의하면 원래 이름을 사용할 수 있는 모든 위치에서 별칭을 사용할 수 있다.
var sampleA = sample.min

 

튜플 (Tuples) 
  • 여러 값을 단일 복합 값으로 그룹화 한다.
  • 튜플안에 값은 어떠한 타입도 가능하며 서로 같은 타입일 필요는 없다.
let animals = ("dog", "cat")

let (dog, cat) = animals
print("This is \(dog)") // This is dog
print("This is \(cat)") // This is cat

print(animals.1) // 인덱스를 사용하여 개별 요소 접근 가능

let person = (name: "Jane", age: "22") // 키/밸류 형식으로도 정의 가능
print("name \(person.name), age \(person.age)") // 키값으로 접근 가능

 

옵셔널(Optionals)
  • 값이 없을 수 있는 상황에 안전하게 처리하기 위해 옵셔널을 사용한다.
  • 문자열의 숫자값은 숫자값으로 변환될 수 있지만 문자열은 변환할 숫자값이 없다.
  • 옵셔널 타입 선언은 타입뒤에 ? 를 작성한다.
let num = "1"
let convertedNum = Int(num) // 옵셔널 타입으로 반환됨

let sample: String? = "sample" // 옵셔널 선언
nil
  • 값이 없는 상태를 말한다.
  • 옵셔널에 값이 없다면 nil로 표시된다.
var num: Int? // 값이 없는 현재 상태는 nil

 

옵셔널 바인딩(Optional Binding)
  • 옵셔널에 값이 있는지 확인하고 옵셔널을 풀어준다.
  • if, guard와 while 구문에서 옵셔널에 값이 있는지 확인하고 추출한다.
if let name = optionalValue {
	// somethig...
} else {
}

 

강제 언래핑(Force Unwrapping)
  • 옵셔널 값을 강제로 언래핑을 해야 할 경우 옵셔널 이름 뒤에 !(느낌표)를 붙인다.
  • 만약 값이 nil인 상태에서 시행 할 경우 런타임 에러가 발생한다.
let sample: String? = "Hi"
print(sample!) // 강제 언래핑

 

Implicitly Unwrapped Optionals
  • 옵셔널이 값을 처음 설정한 후에는 항상 값을 갖는 것은 분명하다. 이러한 경우 항상 값이 있다고 가정할 수 있으므로 접근할 때마다 옵셔널의 값을 확인하고 언래핑할 필요는 없다.
  • String?를 작성하는 대신에 String!로 암시적으로 언래핑 된 옵셔널을 작성한다.
  • 사용할 때 옵셔널 이름의 뒤에 느낌표를 위치시키는 것보다 선언할 때 옵셔널 타입 뒤에 느낌표를 위치시키는 것이 더 좋다.
  • 나중에 변수가 nil이 될 가능성이 있다면 사용하면 안된다.
let possibleString: String? = "옵셔널 스트링"
let forcedString: String = possibleString! // 옵셔널을 풀어줘야함

let assumedString: String! = "암시적으로 언래핑된 옵셔널 스트링"
let implicitString: String = assumedString // 옵셔널 바인딩 필요없이 바로 사용 가능

 

에러 처리(Error Handling)
  • 프로그램이 실행되는 동안 에러가 발생할 때 처리하기 위해 에러 처리를 사용한다.
  • 에러 원인을 판별하고 필요한 경우 에러를 프로그램의 다른 부분으로 전파 할 수 있다.
  • 함수는 선언에 throws키워드를 포함시켜 에러가 발생할 수 있음을 나타낸다.
  • 에러를 발생할 수 있는 함수를 호출할 때는 표현식 앞에 try 키워드를 붙여야 한다.
func canThrowAnError() throws {
    // 에러가 발생하면 발동
}

do {
    try canThrowAnError()
    // 에러가 발생하지 않음
} catch { // Swift는 catch 절에 의해 처리될 때까지 현재 범위에서 에러를 자동으로 전파한다.
    // 에러가 발생
}

func login() throws {
    // ...
}

do {
    try login()
    loginSuccess()
} catch LoginError.idIsIncorrect {
    print("아이디가 틀렸습니다.")
} catch LoginError.pwIsIncorrect {
    print("비밀번호가 틀렸습니다.")
}

 

 

참고자료

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함