iOS

웹개발자의 iOS 개발기(1) - Swift 기초 문법

whh__ 2025. 1. 19. 08:38

나만의 앱을 만들어 보고 싶어 iOS 개발을 공부해 보려고 합니다.

 

'iOS 개발기'의 목표는 다음과 같습니다.

1. 결과만을 위한 코드를 작성하는 게 아닌 유지보수, 운영에 적합한 코드 작성법 배워보기

2. 나만의 앱 만들어 출시 해보기

 

도서나 구글링을 통해서도 입문할 수 있겠지만

여유롭지 않은 시간 때문에 최대한 효율적으로 공부하고 싶어 강의를 구매하게 되었습니다.

 

초격차 패키지 : 네카라쿠배 5개 앱으로 완성하는 iOS 앱 개발 | 패스트캠퍼스

네카라쿠배 출신 강사님들 먼저 클론코딩 진행 중! 네카라쿠배 iOS 멘토부터 WWDC Scholarship Winner까지, iOS 전문가 7인과 함께 네카라쿠배 5개 앱 주요 기능 100% 클론코딩하고 압도적 앱 개발 포트폴

fastcampus.co.kr

 

 

우선 Swift 문법을 찍어 먹어 보았습니다.

 

언뜻 보았을 때 자바스크립트와 유사하다고 느껴졌습니다.

 

01. 변수

변수 선언

var place: String

변수 사용

import SwiftUI

struct ContentView: View {
    
    var name: String = "조우현"
    
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("\\(name)님 안녕하세요!")
            Text(name)
            Text(name)
            Text(name)
        }
        .padding()
    }
}

#Preview {
    ContentView()
}

02. 변수의 타입

import SwiftUI

struct _2_VariableType: View {
    
    
    var name: String = "조우현"
    var age: Int = 20
    var height: Float = 178.9
    var weight: Double = 77.0
    var havePet: Bool = false
    
    var body: some View {
        Text("\\(name)")
        Text("\\(age)")
        Text("\\(height)")
        Text("\\(weight)")
        Text("\\(havePet.description)")
    }
}

#Preview {
    _2_VariableType()
}

03. 컬렉션

Array, Set, Dictionary

import SwiftUI

struct _3_Collections: View {
    
    let name: String = "조우현"    // let(상수): 초기화 후 변경 불가능
    var name2: String = "조우현"   // var(변수): 초기화 후 변경 가능
    
    // 01.Array 초기화
    var foods: [String] = ["eggs", "bananas", "beans"]
    
    // 02.Set 초기화
    var jazzs:  Set<String> = ["bibidudu", "labdap", "dididudu"]
    var hiphop: Set<String> = ["labdap", "rap", "wow"]
    
    // 03.Dictionary 초기화
    var koEngDict = ["사과":"Apple", "바나나":"Banana"]
    
    
    var body: some View {
        VStack {
            // 01.Array 사용
            Text(foods[0])
            Text(foods[1])
            Text(foods[2])
            
            // 02.Set 사용
            Button {
                var intersectionMusic = jazzs.intersection(jazzs)
                intersectionMusic.description
            } label: {
                Text("hit!")
            }
            
            // intersection(): Set 교집합
            Text(hiphop.intersection(jazzs).description)
            
            // 03.Dictionary 사용
            Text(koEngDict["사과"]!)
            Text(koEngDict["바나나"]!)
        }
        
    }
}

#Preview {
    _3_Collections()
}

04. 조건문

if, guard

import SwiftUI

struct _4_Condition: View {
    
    var count = 5
    var hasLoggedIn = true
    
    var body: some View {
        
        if count > 4 {
            Text("숫자는 4보다 큽니다")
        } else {
            Text("숫자는 4와 같거나 작습니다")
        }
        
        if hasLoggedIn {
            Text("로그아웃 하시겠습니까?")
        } else {
            Text("로그인 하시겠습니까?")
        }
        
        guard hasLoggedIn else {
            Text("로그인 하시겠습니까?")
        }
            Text("로그아웃 하시겠습니까?")
        
    }
}

#Preview {
    _4_Condition()
}

05. 반복문

import SwiftUI

struct _5_Loop: View {
    
    let name: [String] = ["리이오","리이사", "춘리", "올리브", "바미", "나리"]
    
    
    var body: some View {
        
        VStack {
            ForEach(name, id: \\.self) { item in
                Text(item)
            }
        }
    }
}

#Preview {
    _5_Loop()
}

06. 함수

import SwiftUI

struct _6_Function: View {
    
    @State var inputNumber: Int = 4
    
    var body: some View {
        VStack {
            Text("Input number is \\(inputNumber)")
            
            Button {
                inputNumber = plusFive(input: inputNumber) // 함수 사용1
                inputNumber = plusFive(with: inputNumber)  // 함수 사용2
            } label: {
                Text("+5")
            }
        }
    }
    
    // 함수 선언1
    func plusFive(input: Int) -> Int {
        return input + 5
    }
    
    // 함수 선언2
    func plusFive(with input: Int) -> Int {
        return input + 5
    }
}

#Preview {
    _6_Function()
}

07. 중간 점검

import SwiftUI

struct _7_Half: View {
    
    var name: String = "조우현"
    var age: Int     = 20
    var names: [String] = ["리이오", "존", "바미", "테리우스", "올리비아"]
    
    var body: some View {
        VStack {
            HStack {
                Text("\\(name)입니다")
                Image(systemName: "pencil")
            }
            Text("안녕하세요! \\(age)살의 \\(name)!")
        }
        
        List {
            //Text("리이오")
            //Text("존")
            //Text("바미")
            ForEach(names, id: \\.self) { name in
                var welcome = sayHi(to: name)
                if name == "리이오" {
                    Text("기다렸어요. \\(welcome)")
                } else {
                    Text(welcome)
                }
            }
        }
        
    }
    
    func sayHi(to name: String) -> String {
        return "\\(name)님 반갑습니다."
    }
}

#Preview {
    _7_Half()
}