ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹개발자의 iOS 개발기(1) - Swift 기초 문법
    iOS 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()
    }
    

     

Designed by Tistory.