iOS 기본 문법 용어

hyun·2025년 5월 20일
1

iOS

목록 보기
2/54

 변수와 상수

앱을 만들다 보면 데이터를 저장하고,
필요할 때 꺼내서 바꾸거나 유지해야 할 때가 많음

ex)

점수는 계속 바뀌니까 → 변수(var)

생일은 안 바뀌니까 → 상수(let)

변수(var)와 상수(let)의 차이

키워드값 변경 가능?예시
var변수가능var name = "Alice"
let상수불가능let birthYear = 2000

Swift에서는
기본적으로 let을 써서 변경 안 되는 값을 안전하게 만들고, 진짜 바꿔야 할 값만 var로 쓰는 게 좋음

💡 실전 예제

var score = 100
score = 120  // 값 바뀜 OK
let version = "1.0.0"
// version = "1.0.1"  // 오류 (let은 못 바꿈)

 데이터 타입(Data Types)

앱에선 숫자, 글자, true/false 같은 다양한 값을 다룸
그래서 컴퓨터가 이게 무슨 종류의 데이터인지 알아야 함

ex)

나이 → 정수 Int
가격 → 실수 Double
로그인 여부 → 논리값 Bool
이름 → 문자열 String

기본 데이터 타입 정리

타입설명예시
Int정수let age: Int = 25
Double소수 포함 숫자let price: Double = 9.99
Float덜 정밀한 실수let weight: Float = 55.5
String글자let name: String = "Jane"

실전 예제 코드

let age: Int = 25
let price: Double = 9.99
let isMember: Bool = true
let greeting: String = "Hello, Swift!"

핵심 요약

var: 바뀌는 값 저장할 때
let: 절대 안 바뀌는 값
데이터 타입은 컴퓨터가 정확하게 값을 다루기 위한 힌트


 형 변환 (Type Casting)

형 변환이란 ?

데이터의 형태(타입)를 바꾸는 것
Swift는 자동으로 형 변환을 안 해주기 때문에 개발자가 직접 바꿔야함

왜 필요할까?

앱을 만들다 보면, 숫자 ↔ 문자열처럼 서로 다른 타입끼리 변환해야 할 일이 많음

ex)
"42" (문자열)을 숫자 42로 바꿔서 계산해야 할 때

Double 타입(예: 9.99)을 Int로 바꿔서 소수점 없이 사용하고 싶을 때

정수를 실수로 바꾸기 (Int → Double)

let integerNumber = 10
let doubleNumber = Double(integerNumber) // 결과: 10.0

문자열을 정수로 바꾸기 (String → Int)

let strNumber = "123"
if let number = Int(strNumber) {
    print("변환된 숫자: \(number)") // 결과: 123
} else {
    print("변환 실패!") // 변환이 안 되면 여기로 옴
}

 튜플 (Tuple)

튜플이란 ?

여러 개의 값을 하나로 묶는 자료형
이름이 달라도 상관없이, 하나의 변수처럼 관리 가능

왜 필요할까?

두 개 이상의 데이터를 한 번에 묶어서 다루고 싶을 때 사용함

ex)
이름과 나이를 함께 저장하고 싶을 때

지도에서 좌표 (x, y)를 하나로 표현하고 싶을 때

let position = (3, 4)
print(position)       // (3, 4)
print(position.0)     // 3
print(position.1)     // 4

 배열 (Array)

배열이란 ?

같은 종류의 데이터를 여러 개 한꺼번에 저장하는 자료형
데이터를 순서대로 저장하고, 번호(인덱스)로 꺼낼 수 있음

ex)

시험 점수

장바구니에 담긴 상품 가격들

하루 동안의 기온 기록

예제 코드

// 배열 만들기
var numbers: [Int] = [1, 2, 3, 4, 5]

// 값 추가
numbers.append(6)  // [1, 2, 3, 4, 5, 6]

// 첫 번째 값 출력
print(numbers[0])  // 1

// 값 삭제
numbers.remove(at: 2)  // [1, 2, 4, 5, 6]

// 정렬하기
let sortedNumbers = numbers.sorted()
print(sortedNumbers)  // [1, 2, 4, 5, 6]

씁.. 처음에 튜플이랑 배열의 차이점을 확 실감하지 못했는데
튜플은 여러 타입의 데이터를 한 번에 받을 수 있다면
배열은 하나의 타입의 데이터를 쭉 받을 수 있음
한 마디로 튜플은 관련 있는 데이터를 모으는 느낌이라면
배열은 동일한 값들을 나열할 때 사용함

 딕셔너리 (Dictionary)

딕셔너리란?

키(Key)와 값(Value)을 한 쌍으로 저장하는 자료형

이름표처럼 키를 사용해 값을 빠르게 찾을 수 있음

예시 상황

학번 → 이름
상품 ID → 상품 이름
사용자 ID → 로그인 정보

예제 코드

// 딕셔너리 만들기
var student: [Int: String] = [101: "John", 102: "Alice"]

// 값 꺼내기
print(student[101])  // John

// 값 추가
student[103] = "Bob"

// 값 수정
student[102] = "Charlie"

// 값 삭제
student.removeValue(forKey: 101)

print(student)  // [102: "Charlie", 103: "Bob"]

 셋 (Set)

셋이란 ?

중복 없이 저장되는 데이터 모음
순서가 없고, 같은 값은 한 번만 들어갈 수 있음

예시 상황

중복 없이 학생 ID 저장
한 사용자가 좋아요 누른 상품 목록
이미 사용된 쿠폰 코드 목록

예제 코드

// 셋 만들기
var fruits: Set<String> = ["Apple", "Banana", "Cherry"]

// 값 추가
fruits.insert("Orange")

// 값 제거
fruits.remove("Banana")

// 포함 여부 확인
if fruits.contains("Apple") {
    print("Apple이 셋에 포함되어 있어요.")
}

// 셋 출력
print(fruits)  // ["Apple", "Orange", "Cherry"]
자료형특징예시
배열 (Array)순서 있고, 중복 허용[1, 2, 3]
딕셔너리 (Dictionary)키-값 쌍으로 저장[101: "Alice"]
셋 (Set)순서 없고, 중복 없음{"Apple", "Banana"}

 조건문 (Condition)

조건문이란 ?

어떤 조건이 맞을 때만 코드를 실행하도록 해주는 문법
상황에 따라 다른 동작을 하게 만들 수 있음

상황 예시

90점 이상 A, 80점 이상 B 등
VIP는 20% 할인, 일반회원은 5% 할인

if 문

let age = 20

if age >= 18 {
    print("성인입니다.")
}

if - else 문

let temperature = 15

if temperature >= 20 {
    print("날씨가 따뜻합니다.")
} else {
    print("날씨가 쌀쌀합니다.") // 조건이 거짓이면 else 안의 코드가 실행됨
}

if - else if - else 문

let score = 85

if score >= 90 {
    print("A 학점")
} else if score >= 80 {
    print("B 학점")
} else if score >= 70 {
    print("C 학점")
} else {
    print("F 학점")
} // 여러 조건 중 가장 먼저 맞는 조건 하나만 실행

switch 문

let grade = "B"

switch grade {
case "A":
    print("훌륭한 성적입니다!")
case "B":
    print("좋은 성적입니다!")
case "C":
    print("보통 성적입니다.")
default:
    print("더 노력해야 합니다.")
}

switch에 범위 사용하기

let number = 7

switch number {
case 1...5:
    print("1에서 5 사이입니다.")
case 6...10:
    print("6에서 10 사이입니다.")
default:
    print("그 외의 숫자입니다.")
}

 반복문 (Loop)

반복문이란 ?

같은 동작을 여러 번 반복할 때 사용하는 문법

상황 예시

여러 학생 점수 출력 배열에 있는 모든 점수를 차례대로 보여줌
조건이 맞을 때까지 반복 사용자가 정답을 입력할 때까지 계속 물어보기
계산 반복 1부터 100까지 더하기

for-in 반복문

for i in 1...5 {
    print("\(i)번째 반복입니다.")
}
let fruits = ["사과", "바나나", "포도"]

for fruit in fruits {
    print(fruit)
} // 배열에 있는 항목들을 차례대로 꺼내서 출력

while 반복문

var count = 3

while count > 0 {
    print("남은 시간: \(count)")
    count -= 1
} // 조건이 참일 동안 반복

repeat-while 반복문

var count = 3

repeat {
    print("현재 count: \(count)")
    count -= 1
} while count > 0 // 무조건 한 번은 실행한 다음 조건 검사

 반복 제어문

break

반복을 중간에 멈춤

for i in 1...10 {
    if i == 5 {
        break
    }
    print(i)
} // 출력: 1, 2, 3, 4

continue

이번 반복만 건너뛰고 다음 반복으로 넘어감

for i in 1...5 {
    if i == 3 {
        continue
    }
    print(i)
} // 출력: 1, 2, 4, 5

 함수(Function)

함수란 ?

코드를 재사용 가능하게 묶어놓은 단위

func 함수이름(매개변수: 타입) -> 반환타입 {
    // 실행 코드
    return 값
}

ex)

func add(a: Int, b: Int) -> Int {
    return a + b
}

기타 형식

반환값이 없는 경우: -> Void 또는 생략 가능
외부 매개변수 생략: _ 사용
기본 매개변수 지정 가능: func greet(name: String = "Guest")

 옵셔널(Optional)

옵셔널이란 ?

값이 있을 수도 있고 없을 수도 있는 변수

var name: String? // 기본값: nil
  • 언래핑 방법
    1. 강제 언래핑(!)
    : print(name!) – 값이 없으면 런타임 오류
    1. 옵셔널 바인딩(if let / guard let)
if let unwrapped = name { ... }
guard let unwrapped = name else { return }

 클래스(Class)

클래스란 ?

속성과 동작(메서드)을 가진 참조 타입 객체

class 클래스이름 {
    var 속성: 타입
    init(속성: 타입) {
        self.속성 = 속성
    }
    func 메서드() {
        // 실행 코드
    }
}

ex)

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    func greet() {
        print("안녕하세요, 저는 \(name)입니다.")
    }
}

let person1 = Person(name: "가현", age: 20)
person1.greet()

 구조체 (Struct)

구조체란 ?

Swift에서 값 타입으로 동작하는 사용자 정의 데이터 타입
속성과 메서드를 가질 수 있음

사용 예시

좌표 데이터 관리 – 예: x, y 좌표
네트워크 응답 데이터 저장 – JSON 응답을 임시로 담을 때
설정값 저장 – 사용자의 고정 설정값 저장

기본 문법

struct 구조체이름 {
    var 속성: 타입
    
    func 메서드이름() {
        // 실행할 코드
    }
}

ex)

struct Rectangle {
    var width: Double
    var height: Double

    func area() -> Double {
        return width * height
    }
}

let rect = Rectangle(width: 5.0, height: 10.0)
print("면적은 \(rect.area())입니다.")

값 타입 (복사 동작)

var rect1 = Rectangle(width: 5.0, height: 10.0)
var rect2 = rect1
rect2.width = 20.0

print(rect1.width) // 5.0
print(rect2.width) // 20.0
//rect1과 rect2는 서로 다른 복사본

문법들을 정리하며 Swift 문법을 한 번 더 상기 시킬 수 있었음 !
직접 써보면서 문법을 눈에 익히는 시간이 필요할 듯

0개의 댓글