Menu
Coddy logo textTech

Swift 치트시트

마지막 업데이트

Hello World 및 기초

Swift는 최상위 수준에서 상용구가 필요 없습니다 - 한 줄이면 실행됩니다.

작업문법
한 줄 출력print("Hello, World!")
줄바꿈 없이 출력print("Hi", terminator: "")
문자열 보간print("Hi \(name)")
주석// this is a comment
여러 줄 주석/* ... */
모듈 임포트import Foundation
파일 실행swift run 또는 swift main.swift

변수 (let / var) 및 타입

상수에는 let, 가변 값에는 var를 사용하세요. 타입은 보통 추론됩니다.

작업문법
상수let age = 30
변수var count = 0
명시적 타입let name: String = "Ada"
기본 타입Int, Double, String, Bool, Character
타입 변환Double(i), String(n), Int("42")
튜플let pair = (1, "a")
타입 별칭typealias ID = Int
타입 확인value is String, value as? String

옵셔널

옵셔널은 값이 없을 수도 있음을 모델링합니다. 사용하기 전에 언래핑하세요.

작업문법
옵셔널 선언var name: String? = nil
옵셔널 바인딩if let n = name { ... }
guard 언래핑guard let n = name else { return }
nil 병합let n = name ?? "default"
옵셔널 체이닝user?.address?.city
강제 언래핑 (안전하지 않음)name!
암묵적 언래핑var name: String!
옵셔널에 mapname.map { $0.count }

문자열

문자열은 완전한 유니코드를 지원하는 값 타입입니다.

작업문법
길이s.count
대문자 / 소문자s.uppercased(), s.lowercased()
연결"foo" + "bar"
보간"Total: \(price)"
포함 여부s.contains("ell")
접두사 / 접미사 여부s.hasPrefix("he")
분할s.split(separator: ",")
치환s.replacingOccurrences(of: "a", with: "b")
여러 줄 문자열""" ... """

컬렉션 (Array, Dictionary, Set)

세 가지 핵심 컬렉션 타입으로, 모두 값 타입입니다.

작업문법
배열 리터럴var nums = [1, 2, 3]
추가nums.append(4)
접근 / 개수nums[0], nums.count
map / filternums.map { $0 * 2 }, nums.filter { $0 > 1 }
딕셔너리 리터럴var ages = ["Ada": 30]
딕셔너리 접근ages["Ada"]는 옵셔널을 반환
셋 리터럴var ids: Set = [1, 2, 3]
셋에 삽입ids.insert(4)
딕셔너리 순회for (k, v) in ages { ... }

제어 흐름

조건에는 괄호가 필요 없으며, switch는 모든 경우를 빠짐없이 다뤄야 합니다.

작업문법
if / elseif x > 0 { ... } else { ... }
삼항 연산자let r = x > 0 ? "pos" : "neg"
switchswitch n { case 1: ...; default: ... }
범위가 있는 switchcase 1...5: ...
for-in 반복문for i in 0..<10 { ... }
배열 순회 for-infor item in items { ... }
while 반복문while x < 100 { ... }
repeat-whilerepeat { ... } while x < 100
break / continuebreak, continue

함수 및 클로저

함수에는 레이블이 붙은 매개변수가 있고, 클로저는 독립적인 코드 블록입니다.

작업문법
함수 정의func add(a: Int, b: Int) -> Int { a + b }
외부 레이블func greet(to name: String) { ... }
기본 매개변수func greet(name: String = "World") { ... }
가변 인자 매개변수func sum(_ nums: Int...) -> Int { ... }
여러 반환값 (튜플)func bounds() -> (min: Int, max: Int) { ... }
클로저 표현식let f = { (x: Int) -> Int in x * x }
후행 클로저nums.map { $0 * 2 }
축약 인자{ $0 + $1 }

구조체 vs 클래스

구조체는 값 타입(복사됨)이고, 클래스는 참조 타입(공유됨)입니다.

작업문법
구조체 정의struct Point { var x: Int; var y: Int }
클래스 정의class Person { var name: String }
클래스 초기화자init(name: String) { self.name = name }
인스턴스 생성let p = Point(x: 1, y: 2)
변경 구조체 메서드mutating func move() { x += 1 }
클래스 메서드func greet() { ... }
상속 (클래스 전용)class Student: Person { ... }
계산 프로퍼티var area: Int { width * height }
정적 멤버static let shared = Manager()

열거형

열거형은 관련 값을 묶으며 연관 데이터를 담을 수 있습니다.

작업문법
열거형 정의enum Direction { case north, south }
케이스 사용let d = Direction.north
열거형에 switchswitch d { case .north: ... }
원시 값enum Status: Int { case ok = 200 }
원시 값 접근Status.ok.rawValue
원시 값으로 초기화Status(rawValue: 200)
연관 값case result(Int, String)
열거형의 메서드func label() -> String { ... }

가장 자주 쓰는 Swift 문법을 한 페이지에 담았습니다. 이 Swift 치트시트는 언어 핵심을 위한 빠른 참조 자료입니다 - 상수와 변수, 옵셔널, 문자열, 컬렉션, 제어 흐름, 함수와 클로저, 그리고 iOS와 macOS 앱을 만드는 데 쓰는 구조체, 클래스, 열거형을 다룹니다.

여기 나오는 모든 내용은 표준 Swift이며 공식 툴체인으로 컴파일됩니다. 필요한 것을 복사하거나, Swift 플레이그라운드에서 모든 코드를 바로 실행해 보세요 - Xcode가 필요 없습니다.

Swift 치트시트 자주 묻는 질문

이 Swift 치트시트는 무료인가요?
네. 이 Swift 치트시트는 완전히 무료이며 회원 가입이 필요 없습니다. 즐겨찾기에 추가해 두고 옵셔널 패턴, 클로저 문법, 컬렉션 메서드를 찾아봐야 할 때마다 다시 방문하세요.
Swift에서 옵셔널을 어떻게 언래핑하나요?
옵셔널은 값을 담거나 nil일 수 있으므로, 사용하기 전에 언래핑합니다. 안전한 방법으로는 옵셔널 바인딩(if let n = name { ... }), 함수 상단의 guard let, nil 병합 연산자(name ?? "default"), 옵셔널 체이닝(user?.name)이 있습니다. name!을 사용한 강제 언래핑은 동작하지만 값이 nil이면 충돌하므로, 확신할 때만 사용하세요.
Swift에서 구조체와 클래스의 차이는 무엇인가요?
struct는 값 타입입니다: 대입하거나 전달하면 복사되므로 변경이 원본에 영향을 주지 않습니다. class는 참조 타입입니다: 복사본이 같은 인스턴스를 공유하며, 클래스만 상속을 지원합니다. 애플의 권장 사항은 기본적으로 구조체를 선호하고, 공유 가변 상태나 상속이 필요할 때 클래스를 사용하는 것입니다.
Swift를 온라인에서 연습할 수 있나요?
네. Swift 플레이그라운드를 열어 이 치트시트의 어떤 코드든 브라우저에서 실행해 보세요 - Xcode를 설치할 필요가 없습니다. 체계적으로 배우고 싶다면, Coddy의 무료 인터랙티브 Swift 강좌가 옵셔널과 컬렉션부터 구조체, 클래스, 열거형까지 단계별로 안내합니다.
이 치트시트는 초보자에게 적합한가요?
네. 가장 흔한 주제(변수, 옵셔널, 제어 흐름)부터 고급 주제(클로저, 구조체 vs 클래스, 열거형)까지 순서대로 정리되어 있어, 첫날부터 상단 섹션을 사용하고 점차 나머지로 넓혀갈 수 있습니다.
Coddy programming languages illustration

Coddy로 Swift 배우기

시작하기