관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift 공식 문서] 1. Basics (Type Aliases, 예외 처리) 본문

swift 공식 문서

[iOS - swift 공식 문서] 1. Basics (Type Aliases, 예외 처리)

jake-kim 2021. 6. 17. 00:24

Int

  • Swift는 현재 플랫폼의 bit에 따라 적용
    • 32bit 플랫폼 -> Int는 Int32와 동일
    • 64bit 플랫폼 -> Int는 Int64와 동일

UInt

  • UInt또한 Int와 동일하게 플랫폼의 bit에 따라 적용

Type Safety, Type Inference

  • swift는 type safe 언어이므로, 컴파일타임에 오류를 표출하므로, 개발 프로세스에서 빠른 오류 포착 용이
  • 만약 타입을 지정해주지 않는 경우 컴파일 타임에 Type Inference
// Type Inference

let age = 42 // Int로 추론
let pi = 3.141592 // Double로 추론

Type Aliases

  • typealias 키워드는 type의 별칭을 정의
class Map {
    typealias ZoomLevel = UInt16
    let defaultZoom: ZoomLevel

    init(defaultZoom: ZoomLevel) {
        self.defaultZoom = defaultZoom
    }
}

예외 처리

  • 오류 vs 예외
    • 오류: 상황에 대한 처리 불가
    • 예외: 상황에 대한 처리 가능
  • 예외를 던지는 부분과 처리하는 부분이 나누어져 있는 형태
    • 예외 던지는 부분: 해당 함수
    • 예외 처리하는 부분: 함수를 사용하는 부분
  • 예외 처리 방법
    • 예외가 발생하는 함수 부분에 throws 키워드 추가
    • 예외를 처리할 부분에 do - try - catch 구현
    • 예외 케이스를 정의하여 catch 부분에 정밀하게 처리

예제

  • 예외 타입 정의
enum TestError: Error {
    case lowValue
    case highValue
}
  • 예외 throw
func plusThree(at number: Int) throws -> Int {
    if number < 0 {
        throw TestError.lowValue
    } else if number > 100 {
        throw TestError.highValue
    }

    return number + 3
}
  • 예외 처리 - try? 로 따로 예외처리를 안하고, 예외 발생할 시 nil로 받는 방법
class Test {
    func test() {
        print(try? plusThree(at: -1)) // nil
    }
}
  • catch로 디테일 예외처리
class Test {
    func test() {
        do {
            try plusThree(at: 101)
        } catch TestError.lowValue {
            print("예외 처리 커스텀")
        } catch {
            print(error) // highValue
        }
    }
}

* 참고

https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html

Comments