iOS: Swift 톺아보기

Eden·2024년 10월 21일

iOS

목록 보기
4/18
post-thumbnail

Swift 찍먹👅

javascipt와 python을 공부해 본 경험이 있어서 역시나 문법은 좀 익숙한 듯 싶었다. 개념은 거의 유사하고, 가끔 js/python과 다른 특이한 규칙이 있다고 생각했다. 분명한건 Swift가 안전한 코드를 지향하고 있다고 느꼈다.

같은 내용, 다른 언어! 특징 찾아보기

JavaScript - 함수 표현식과 화살표 함수 사용

function greet() {
  return "Hello, World!";
}

const greetArrow = () => "Hello, World!";

console.log(greet());      // Hello, World!
console.log(greetArrow()); // Hello, World!

Python - 간결한 함수 정의

def greet():
    return "Hello, World!"

print(greet())  # Hello, World!

Swift - 명확한 파라미터 타입과 반환 타입 지정

func greet() -> String {
    return "Hello, World!"
}

print(greet())  // Hello, World!

왜 내가 파이썬 좋아했는지 알 것 같다...🤭

아래는 오늘 배운 것을 대략 정리해보았다.

1. 변수와 상수

🔹변수(Variable)

변하는 값(데이터)을 저장합니다.
var로 선언합니다.

var welcome = "Hello, Swift!"
welcome = "Hi, Swift!"  // 변수라서 값 변경 가능

🔹상수(Constant)

let으로 선언된 값은 변경이 불가능합니다.
앱에서 변하지 않는 값(예: 설정값, 단위 등)을 저장할 때 사용합니다.
예시:

let name = "Leeo"
// name = "John"  // 오류! let으로 선언된 상수는 수정할 수 없습니다.

✅ 언제 var와 let을 사용할까?
값이 변하지 않는다면 let을 사용하세요.
상수를 사용하는 것이 코드의 안정성과 가독성을 높입니다.

2. 데이터 타입

Swift는 엄격한 타입 언어입니다. 변수나 상수를 선언할 때 타입을 명시하거나 추론을 통해 타입이 자동으로 정해집니다.

let city: String = "Seoul"  // 명시적 타입 선언
var age = 25  // 타입 추론(Int로 자동 설정)

🔹 주요 데이터 타입

String: 문자열을 저장합니다.

let greeting: String = "안녕하세요"

Int: 정수형 숫자입니다.

var year: Int = 2024

Float / Double: 소수점을 포함한 숫자입니다.
Float은 32비트, Double은 64비트로 더 정밀합니다.

var pi: Float = 3.14
var largePi: Double = 3.1415926535

Bool: 논리형 데이터로, true 또는 false를 가집니다.

var isRegistered: Bool = true

3. 컬렉션

🔹배열(Array)

순서가 있는 데이터의 집합입니다.
같은 타입의 값들만 저장할 수 있습니다.
예시:

var fruits: [String] = ["Apple", "Banana"]
fruits.append("Cherry")  // 배열에 데이터 추가
print(fruits[0])  // Apple

✅ 유용한 메서드
isEmpty: 배열이 비어 있는지 확인
count: 배열의 길이 확인

if !fruits.isEmpty {
    print("We have \(fruits.count) fruits.")  // We have 3 fruits.
}

🔹사전(Dictionary)

키-값 쌍으로 데이터를 저장합니다.
예시:

var capitals: [String: String] = ["Korea": "Seoul"]
capitals["Japan"] = "Tokyo"  // 데이터 추가
print(capitals["Korea"] ?? "Unknown")  // Seoul

✅ ?? 연산자
값이 없을 때 기본값을 제공합니다.

let capital = capitals["China"] ?? "Not Found"  // 기본값 Not Found

🔹집합(Set)

중복되지 않는 값의 집합입니다.
예시:

var colors: Set<String> = ["Red", "Green", "Blue"]
colors.insert("Yellow")  // 데이터 추가
print(colors.contains("Red"))  // true

4. 조건문

🔹 if-else 문

조건에 따라 코드의 흐름을 제어합니다.
예시:

let score = 85

if score >= 90 {
    print("Excellent")
} else if score >= 75 {
    print("Good")
} else {
    print("Try harder")
}

✅ 다중 조건 처리
여러 조건을 논리 연산자(&&, ||)로 결합할 수 있습니다.

let age = 20
let isStudent = true

if age > 18 && isStudent {
    print("You're a university student.")
}

🔹 switch 문

여러 경우의 수를 한 번에 처리할 수 있습니다.
예시:

let grade = "A"

switch grade {
case "A":
    print("Excellent")
case "B":
    print("Good")
default:
    print("Needs Improvement")
}

✅ 범위와 함께 사용
범위 연산자(..., ..<)로 특정 범위를 매칭할 수 있습니다.

let score = 88

switch score {
case 90...100:
    print("A+")
case 80..<90:
    print("B+")
default:
    print("C or below")
}

5. 반복문

🔹 for 문

컬렉션의 각 항목을 순회하거나 범위를 반복합니다.
예시:

let items = ["Apple", "Banana", "Cherry"]

for item in items {
    print(item)
}

for index in 1...5 {
    print("\(index) times")
}

🔹 while 문

조건이 참인 동안 코드를 반복합니다.
예시:

var countdown = 5

while countdown > 0 {
    print("Countdown: \(countdown)")
    countdown -= 1
}

🔹 repeat-while 문

최소 한 번은 실행한 후 조건을 검사합니다.
예시:

var number = 1

repeat {
    print(number)
    number += 1
} while number <= 5

6. 옵셔널(Optional)

Swift에서는 nil(값이 없음)을 명시적으로 처리해야 합니다. 옵셔널은 값이 있을 수도, 없을 수도 있는 변수를 의미합니다.

예시:

var nickname: String? = nil  // 닉네임이 없을 수도 있음
nickname = "Leeo"

✅ 옵셔널 바인딩
옵셔널 값을 안전하게 추출합니다.

if let unwrappedName = nickname {
    print("Nickname is \(unwrappedName)")
} else {
    print("No nickname")
}

✅ 강제 언래핑
값이 반드시 존재한다고 확신할 때 !를 사용합니다.
하지만 비추천되며, 안전한 코드 작성을 위해 바인딩을 권장합니다.

print(nickname!)  // 닉네임이 없으면 런타임 오류 발생

7. 함수(Function)

🔹 함수 선언 및 호출

재사용 가능한 코드 블록입니다.
예시:

func greet(name: String) -> String {
    return "Hello, \(name)!"
}

let greeting = greet(name: "Leeo")
print(greeting)  // Hello, Leeo!

🔹 파라미터와 반환 값이 없는 함수

func sayHello() {
    print("Hello!")
}
profile
🌐 Frontend &&  iOS && 대학생

0개의 댓글