iOS

[iOS] Swift 문법 복습

챎 님 2025. 3. 18. 22:15
더보기

이 포스트는 한성현 교수님의 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