Language/Swift
SwiftUI 에서 Typealias으로 타입 별칭 정하기
IFLA
2023. 1. 4. 13:13

SwiftUI에서나 사용자가 임의로 만든 데이터 타입은 다른 이름으로 부여할 수 있다. 기존에 선언되어 있는 유형에서 별칭을 사용하는 거다.
- 내장 유형 : String, Int, Float…
- 사용자 정의 유형 : class, struct, enum …
- 복합 유형 : closuer
기본 코드
typealias MyName = String
typealias YourName = String
typealias DoubleValue = Double
typealias IntegerValue = Int
let name: MyName = "테스트"
var yourName: YourName = "김아무개"
yourName = name
이용한 코드
import SwiftUI
//MARK: MODEL
struct FruitModel: Identifiable {
var id = UUID().uuidString
let ImageName: String
let name: String
let price: Int
let isFavorite: Bool
}
let Fruits = [
FruitModel(ImageName: "apple", name: "사과", price: 3000, isFavorite: true),
FruitModel(ImageName: "Peach", name: "복숭아", price: 2000, isFavorite: false)
]
let character = [
characterModel(ImageName: "ponyo", name: "포뇨", price: 23000, isFavorite: false),
characterModel(ImageName: "sosuke", name: "소스케", price: 32000, isFavorite: true)
]
typealias characterModel = FruitModel
struct ContentView: View {
var body: some View {
HStack {
ItemsRow(item: character[0])
ItemsRow(item: character[1])
}
}
}
struct ItemsRow: View {
var item: characterModel
var body: some View {
VStack(spacing: 20) {
Image(item.ImageName)
.resizable()
.scaledToFill()
.clipShape(Circle())
.frame(width: 150, height: 150)
Text(item.name)
.font(.title)
.fontWeight(.bold)
.foregroundColor(Color("Peach"))
Text("₩\\(item.price)")
.font(Font.title2.weight(.semibold))
if item.isFavorite {
Image(systemName: "star.fill")
.foregroundColor(.yellow)
.imageScale(.large)
} else {
Image(systemName: "star")
.foregroundColor(.gray)
.imageScale(.large)
}
}
}
}
실행 화면
