예시 코드
var x : Int = 10 print ("x의 값은 \(x) 입니다")결과
x의 값은 10 입니다



뤼튼


예시 코드
// 튜플 선언 let person = (name: "Alice", age: 30, city: "Seoul") // 튜플의 값 사용 print("이름: \(person.name), 나이: \(person.age)") // 언더스코어를 사용하여 city 값을 무시 let (name, age, _) = person print("이름: \(name), 나이: \(age)")결과
이름: Alice, 나이: 30
이름: Alice, 나이: 30
x = x + 1
또는
x += 1
== (이퀄 두 개) : 값이 같은지 확인
=== (이퀄 세 개) : 메모리 주소 값이 같은지 확인


예제코드
let x = 1 if x is Int { // x가 정수이면 print("Int!") }결과
Int!

예시 코드
for _ in 1...5 { print("안녕") }
예시 코드
for i in 1...5 { print("\(i) 안녕") }



var value = 3
var days: Int = 0
switch(value) {
case 1, 3, 5, 7, 8, 10, 12:
print("31 일입니다")
case 4, 6, 9, 11:
print("30 일입니다")
case 2:
print("28 or 29 일입니다")
default:
print("월을 잘못 입력하셨습니다")
}
위 코드처럼 콤마를 사용
let num = 25
let count: String
switch num {
case 0...9:
count = "한자리 수"
case 10...99:
count = "두자리 수"
case 100...999:
count = "세자리 수"
default:
count = "네자리 수 이상"
}
print("\(count)입니다.")

var numbers: [Int] = [1, 2, 3, 4, 5]
for num in numbers where num > 3 {
print(num)
}
예시코드
var value = 4
switch value {
case 4:
print("4")
fallthrough
case 3:
print("3")
fallthrough
case 2:
print("2")
fallthrough
default:
print("1")
}
결과
4
3
2
1
예제코드
var x : Int? // ?를 넣지 않으면 에러가 남
x = 10
var y = x! + 1 // !를 사용하지 않으면 에러가 남 (!로 강제 언래핑)
print (x, y) // Optional(10) 이 출력됨
결과
Optional(10) 11
※ 값이 nil인데 강제로 (!를 사용하면) 출력을 하면 에러
예시 코드
var x : Int?
if x != nil { // 띄어쓰기 주의!
// 여기서 띄지 않고 붙여서 x!=nil로 사용하면 x! = nil이 된다
print (x!)
} else {
print ("nil")
}
예시 코드
var x: Int?
x = 10
if let xx = x { // if let xx 로 생략해서 사용 가능
print(x, xx)
} else {
print("nil")
}
// 옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
결과
Optional(10) 10
var x1: Int?
if let xx = x1 { // 옵셔널 변수 x1이 값이 없어서 if문의 조건이 거짓이 되어 if문 실행하지 않고 else로 감
print(xx)
} else {
print("nil")
}
결과
Optional(10) 10
예시 코드
var pet1: String?
var pet2: String?
pet1 = "cat"
pet2 = "dog"
if let firstPet = pet1, let secondPet = pet2 { // 콤마사용 (pet1, pet2로 생략 가능)
print(firstPet, secondPet)
} else {
print("nil")
}
Int? 옵셔널
let x : Int? = 1 let y : Int = x! print(x!,y) print(type(of: x!),type(of: y))결과
1 1
Int Int
Int! 옵셔널
let a : Int! = 1 //Implicitly Unwrapped Optional (암시적 옵셔널)
let b : Int = a //Optional로 사용할 수 없으면 자동으로 unwrap함
let c : Int = a!
let d = a // 자료형이 정해져 있지 않은 상태에서는 Optional로 사용될 수 있음
let e = a + 1
print(a)
print(b)
print(c)
print(d)
print(e)
print("")
print(type(of: a))
print(type(of: b))
print(type(of: c))
print(type(of: d))
print(type(of: e))
결과
Optional(1)
1
1
Optional(1)
2
Optional<Int>
Int
Int
Optional<Int>
Int
예시 코드
var x : Int? // 여기서 x의 값을 초기화하지 않음 var y = x ?? 0 // x가 nil일 때의 값을 0으로 지정 print(x, y)결과
nil 0

과제 : Optional (3), 3

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/functions/
func <함수명> (<매개변수 이름>: <매개변수 타입>, <매개변수 이름>: <매개변수 타입>,... ) -> <반환값 타입> {
// 함수 코드
}
※ swfit는 다른 언어와 다르게 함수를 먼저 실행하고 밑에 정의해도 실행이 가능함
func sayHello() { //리턴값 없으면( -> Void ) 지정하지 않아도 됨 print("Hello") } void sayHello() { //C, C++ printf("Hello"); }반환값이 Void 일 때만 생략 가능!
func message(name: String, age: Int) -> String { return("\(name) \(age)") }

func add(x : Int, y : Int) -> Int {
return x + y
}
print(add(x:10, y:20))
var z = add(x:20, y:40)
print(z)
print("")
print(type(of:add))
print(type(of:z))
결과
30
60
(Int, Int) -> Int
Int
func add(x : Int, y : Int) -> Int {
return x + y
}
print(add(x : 10, y :20))
print(type(of:add))
함수명 : add(x:y:)
// add함수의 타입 : (Int, Int) -> Int
- 외부매개변수명(argument label) 생략하면
- 내부매개변수명(parameter name)이 외부 매개변수명까지 겸함
func add(first x : Int, second y : Int) -> Int {
return x + y
}
print(add(first:10, second:20))
print(type(of:add))
함수명 : add(first:second:)
// add함수의 타입 : (Int, Int) -> Int
- first 와 second 는 argument lable에 해당함 (외부 매개변수명, 호출)
- x와 y는 parameter name에 해당함 (내부 매개변수명, 함수내부)
func add(_ x : Int, _ y : Int) -> Int {
return(x + y)
}
print(add(10, 20)) // x와 y를 (레이블) 표시하지 않고 생략
print(type(of:add))
함수명 : add(_:_:)
// add함수의 타입 : (Int, Int) -> Int
- 외부매개변수명 생략한다는 의미
- 다른 언어처럼 호출 가능하지만 추천X
func add(_ x : Int, with y : Int) -> Int {
return (x + y)
}
print(add(10, with : 20))
print(type(of:add))
함수명 : add(_:with:)
// add함수의 타입 : (Int, Int) -> Int
- 첫번째 외부매개변수명만 생략하는 경우가 많음
- Objective-C언어의 호출 방식이 이러함
- 두번째 매개변수부터는 외부매개변수 사용
- ※ 제일 많이 쓰는 방법
예시코드
func add ( _ x : Int, with y : Int) -> Int { print (#function) return x + y } print(add(10, with : 20))결과
add(_:with:)

https://developer.apple.com/documentation/uikit/uitableviewdatasource
https://developer.apple.com/documentation/uikit/uitableviewdatasource
1. tableView(:cellForRowAt:)
셀 구성: 각 행에 표시할 셀을 반환
자료형: UITableViewCell
2. tableView(:numberOfRowsInSection:)
행 수 반환: 섹션 내의 행 수를 반환
자료형: Int
3. tableView(:didSelectRowAt:)
행 선택 시 동작: 사용자가 특정 행을 선택할 때 호출
자료형: Void
4. numberOfSections(in:)
섹션 수 반환: 테이블의 섹션 수를 반환
자료형: Int
5. tableView(:heightForRowAt:)
셀 높이 설정: 각 행의 높이를 반환
자료형: CGFloat