이전에는 Raw Value에 대해서 알아보았다. 초기에 값을 넣어줬는데, 사실 값이 변하는 경우가 더 많다. 이를 해결하기 위해 Associated Values(연관값) 을 사용하면 된다.
바코드와 qr코드를 예로 들어보자.
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}
바코드는 숫자로 이루어져 있고, qr코드는 문자로 이루어져 있다.
생성 할 때, 연관값을 함께 전달한다.
let productBarcode = Barcode.upc(8, 85909, 51226, 3)
let qrCode = Barcode.qrCode("ABC12345")
switch productBarcode {
case .upc(let numberSystem, let manufacturer, let product, let check):
print("UPC: \(numberSystem), \(manufacturer), \(product), \(check).")
case .qrCode(let code):
print("QR 코드: \(code)")
}