이 포스트는 한성현 교수님의 iOS 프로그래밍 실무를 듣고 작성하였습니다.
# 자료형
var x = 10
print(type(of:x))
let s = MemoryLayout.size(ofValue: x)//8
let t = MemoryLayout<Int>.size
print(s, t)
자료형의 종류와 크기에 대해 알 수 있습니다.
실제로 초깃값이 있으면 자료형을 작성하는 경우는 거의 없습니다.
상수나 변수가 정의된 시점에 초깃값을 제공하면, Swift는 해당 상수나 변수에 사용될 자료형을 추론이 가능합니다.
let myAge = 25
let pi = 3.141592
myAge 는 Int 형으로 추론이 가능하며, pi 는 Double 으로 추론이 가능합니다.
자료형에는 다양한 종류가 있습니다.
- Int : 정수(소수점이 없는 수)를 저장하는 데 사용
- Double :64 비트로 부동 소수점 수를 저장, 소수점 15자리 정밀도
- Float : 32 비트로 부동 소수점 수를 저장, 소수점 6자리 정밀도
- Bool :참 또는 거짓(1 또는 0) 조건을 처리할 데이터 타입
- Charater : 문자, 숫자, 문장 부호, 심볼 같은 유니코드(Unicode)문자 하나를 저장
- String : 단어나 문장을 구성하는 일련의 문자
# 이스케이프 시퀀스
var newline = "\n"
\n << 이 표시는 이스케이프 시퀀스로 개행을 해 줍니다.
# 변수와 상수
먼저, 변수에 대해 알아 보겠습니다.
var myVariable = 10
변수는 할당된 값을 변경이 가능한 것입니다.
let maximumNumber = 10
반대로 상수는 할당된 값을 변경할 수 없으며, 코드 내에서 반복적으로 사용되는 값이 있을 경우에 유용합니다.
# 튜플
여러 값을 하나의 개체에 일시적으로 묶는 방법입니다.
간단하게 튜플의 모든 값을 추출하여 변수 또는 상수에 할당해 보겠습니다.
let myTuple = (10, 12.1, "Hi")
let (myInt, myFloat, myString) = myTuple
myTuple 의 자료형은 무엇일까요?
- 첫 번째 요소: Int (10)
- 두 번째 요소: Double (12.1)
- 세 번째 요소: String ("Hi")
튜플에는 이름을 추가할 수 있습니다.
let myTuple = (count: 10, length: 12.1, message: "Hi")
마지막으로
print(myTuple.message, myTuple.2)
출력 값은 무엇이 될까요?
myTuple.message는 "Hi"를 출력하고, myTuple.length는 12.1을 출력합니다.
myTuple.2와 같은 접근은 허용되지 않으므로, 해당 부분을 수정해야 합니다.
# 옵셔널
가장 중요하게 강조하는 부분입니다.
- 옵셔널형 선언 : 자료형 뒤 ?
- 옵셔널 언래핑 : 변수명 뒤 !
# 옵셔널 바인딩
var x : Int?
x = 10
if let xx = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x,xx)
}
else {
print("nil")
}
var x1 : Int?
if let xx = x1 { //옵셔널 변수 x1이 값이 없어서 if문의 조건이 거짓이 되어 if문 실행하지 않고 else로 감
print(xx)
}
else {
print("nil")
}
여기서 신경써야 할 부분은
if let xx = x {
이 부분인데요.
이제는 xx = x 대신에
if let x = x
라고 작성해도 됩니다!
# nil 병합 연산자
옵셔널변수 ?? nil일 때 할당되는 값입니다.
옵셔널 변수의 값이 nil이면 ?? 다음 값으로 할당됩니다.
var age : Int?
age = 20
print(age)
var myAge = age ?? 1
print(myAge)
age 와 myAge 값을 출력하면 결과는
Optional(20), 20 이 됩니다.
# BMI 판정 앱 if ~ else 를 switch ~ case 변경
작년에 만들었던 BMI 계산 앱 코드를 가지고 if else 문을 switch case 로 변경해 보겠습니다.
let weight = 60.0
let height = 170.0
let bmi = weight
var body = ""
if bmi >= 40 {
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
body = "정상"
} else {
body = "저체중"
}
print("BMI:\(bmi), 판정:\(body)")
위 코드를 변환해 보면,
let weight = 60.0
let height = 170.0
let bmi = weight / (height * height * 0.0001) // kg/m*m
var body = ""
switch bmi {
case let x where x >= 40:
body = "3단계 비만"
case let x where x >= 30:
body = "2단계 비만"
case let x where x >= 25:
body = "1단계 비만"
case let x where x >= 18.5:
body = "정상"
default:
body = "저체중"
}
print("BMI:\(bmi), 판정:\(body)")
이렇게 수정이 가능합니다.
'iOS' 카테고리의 다른 글
[iOS] 함수와 클래스 및 상속 (0) | 2025.03.26 |
---|---|
[iOS] 무드등 앱 개발 및 Swift 문법 복습 2 (0) | 2025.03.19 |
[iOS] 생성형 AI 및 오픈 API 활용 (0) | 2025.03.05 |
[iOS] 클로저 Closure (0) | 2024.12.11 |
[iOS] BMI 계산기 앱 3 (1) | 2024.12.04 |