컴퓨터 공부/🐦‍⬛ Swift

[Swift 공부일지] 기본 문법에 대한 소개 - 조건문

letzgorats 2023. 11. 8. 17:06

Swift를 공부하면서, 필요한 공부도 진행해보도록 하겠습니다 😎

👉조건문 👈

※  Swift에서는 3개의 조건이 있다면 어떻게 나눌 수 있을까요?

if condition1 {
    // condition1이 참일 때 실행할 코드
} else if condition2 {
    // condition1이 거짓이고 condition2가 참일 때 실행할 코드
} else if condition3 {
    // condition1과 condition2가 거짓이고 condition3가 참일 때 실행할 코드
} else {
    // 모든 조건이 거짓일 때 실행할 코드
}

 

switch문도 여러 조건을 검사할 수 있는 강력한 방법인데요, 'switch' 문은 하나의 값에 대해 여러 가능한 경우(case)를 체크하며, 각각의 경우에 대한 코드 블록을 실행할 수 있게 해줍니다. 

아래와 같은 예시는 switch문의 예시입니다.

let someValue = 3

switch someValue {
case 1:
    print("The value is 1")
case 2:
    print("The value is 2")
case 3:
    print("The value is 3")
default:
    print("The value is something else")
}

 

이 코드에서 'someValue'가 3이므로 "The value is 3"가 출력됩니다. 각 'case' 뒤에는 실행할 코드 블록이 오고, 'default' 블록은 어떤 'case'도 일치하지 않을 때 실행됩니다. Swift의 'switch'문은 각 'case'가 유니크해야 하며, 모든 가능한 값들을 커버해야 한다는 점을 기억하세요!


※  if 문에 2가지 조건을 넣으려면 어떻게 해야하나요? 콤마(,)로 조건을 구분하는 것과 어떻게 다른가요?

Swift에서 if 문에 여러 조건을 결합하려면 논리 연산자를 사용합니다.

&&는 AND 연산자로, 모든 조건이 참일 때 코드 블록을 실행하고,

||는 OR 연산자로, 조건 중 하나라도 참일 때 코드 블록을 실행합니다.

 

예를 들면, 

if condition1 && condition2 {
    // condition1과 condition2 둘 다 참일 때 실행할 코드
}

 

콤마를 사용하는 경우는 주로 'switch'문에서 여러 개의 case를 나열할 때 볼 수 있으며, 'if'문에서는 콤마를 사용하지 않습니다.

switch someValue {
case 1, 2, 3:
    print("The value is 1, 2, or 3")
default:
    print("The value is something else")
}

 

이 경우, 'someValue'가 1,2 또는 3이면 주어진 메시지를 출력합니다. 'if' 문에서는 이런 방식으로 조건을 구분하지 않고, 논리 연산자를 사용해야 합니다.


※  로그인 한 사용자 중에  다이아몬드 등급의 사용자에게만 쿠폰이 보이는 화면을 만들어 볼까요?

Swift에서 로그인 한 사용자가 다이아몬드 등급인지를 확인하고, 해당 조건을 만족할 경우 쿠폰을 보여주는 기능을 구현하려면 먼저 사용자의 로그인 상태와 등급을 확인하는 로직이 필요합니다.

예를 들어, 사용자의 로그인 상태와 등급을 나타내는 isLoggedInuserRank 변수가 있다고 가정할 때, 다음과 같이 작성할 수 있습니다.

var isLoggedIn: Bool = true
var userRank: String = "Diamond"

if isLoggedIn && userRank == "Diamond" {
    // 쿠폰 보여주기
    print("Here's your coupon!")
} else {
    // 쿠폰을 보여주지 않음
    print("No coupon available.")
}

이 코드 조각은 isLoggedIn 변수가 true (사용자가 로그인 상태임)이고 userRank 변수가 "Diamond" (사용자 등급이 다이아몬드임)인 경우에 "Here's your coupon!" 메시지를 출력합니다. 다이아몬드 등급이 아니거나 로그인하지 않은 경우에는 "No coupon available." 메시지를 출력합니다.

 

간단하게, 화면을 만들어보면 아래와 같습니다.

import SwiftUI

struct ContentView: View {
    
    
    @State var isLoggedIn = [true,false]
    @State var userRank: String = "💎"
    
    var body: some View {
        
        
        VStack {
            if (isLoggedIn[0]) && userRank == "💎" {
                // 쿠폰 보여주기
                List {
                    Text("\(userRank)")
                        .font(.largeTitle) // 폰트 크기를 크게 설정
                        .frame(maxWidth: .infinity, alignment: .center) // Text 뷰를 최대 너비로 설정하고 중앙 정렬
                    Image("GlassesAllu")// 에셋 카탈로그에 있는 이미지 이름으로 변경해야 함
                        .resizable() // 이미지 크기를 조정할 수 있도록 설정
                        .scaledToFit() // 이미지의 비율을 유지하며 뷰에 맞게 조정
                    Label("Here is your coupon", systemImage: "coupon").frame(maxWidth: .infinity, alignment: .center) // Label 뷰를 최대 너비로 설정하고 중앙 정렬
                }
                

            } else {
                // 쿠폰을 보여주지 않음
                Text("No coupon available.").frame(maxWidth: .infinity, alignment: .center) // Text 뷰를 최대 너비로 설정하고 중앙 정렬
                
            }
            Spacer() // 하단 스페이서
            
            Button("click") {
                // 버튼을 클릭했을 때 실행할 액션
            }

        }
        
    }
}

#Preview {
    ContentView()
}

 

UI 구성 요소에 따라 쿠폰을 보여주는 방법은 다를 수 있습니다.

예를 들어, UIKit을 사용한다면 UILabel이나 UIImageView를 통해 쿠폰을 보여줄 수 있고, SwiftUI를 사용한다면 TextImage 뷰를 사용할 수 있습니다. 


 

반응형