포스트

문법 (26) Property Wrappers (프로퍼티 래퍼)

Swift에서 Property Wrappers (프로퍼티 래퍼)의 개념과 활용법을 설명합니다.

문법 (26) Property Wrappers (프로퍼티 래퍼)

Property Wrappers (프로퍼티 래퍼)

Swift의 Property Wrappers(프로퍼티 래퍼)프로퍼티의 공통적인 동작을 캡슐화하여 재사용성을 높이는 기능입니다.
이를 활용하면 코드를 더 간결하고 효율적으로 관리할 수 있습니다.

1. 기본적인 프로퍼티 래퍼 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@propertyWrapper
struct UpperCase {
    private var value: String = ""

    var wrappedValue: String {
        get { value }
        set { value = newValue.uppercased() }
    }

    init(wrappedValue: String) {
        self.wrappedValue = wrappedValue
    }
}

struct User {
    @UpperCase var name: String
}

var user = User(name: "alice")
print(user.name)  // ALICE
  • @propertyWrapper를 사용하여 값을 자동으로 대문자로 변환하는 래퍼 생성

2. projectedValue 활용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@propertyWrapper
struct Trimmed {
    private var value: String = ""

    var wrappedValue: String {
        get { value }
        set { value = newValue.trimmingCharacters(in: .whitespacesAndNewlines) }
    }

    var projectedValue: String {
        return "**\(value)**"
    }
}

struct Message {
    @Trimmed var text: String
}

var message = Message(text: "  Swift  ")
print(message.text)  // "Swift"
print(message.$text)  // "**Swift**"
  • projectedValue를 활용하면 래퍼의 추가 정보 제공 가능

3. 기본값을 가진 프로퍼티 래퍼

1
2
3
4
5
6
7
8
9
10
11
@propertyWrapper
struct DefaultValue {
    var wrappedValue: String = "N/A"
}

struct Product {
    @DefaultValue var name: String
}

let product = Product()
print(product.name)  // "N/A"
  • 기본값을 제공하는 래퍼를 활용하여 초기값을 지정 가능

4. Codable과 함께 사용

```swift struct User: Codable { @Trimmed var username: String }

let jsonData =

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.