프로퍼티 래퍼(property wapper)

Hisop·2022년 10월 17일
0

Swift

목록 보기
3/7

스위프트 5.1부터 지원하는 기능인 프로퍼티 래퍼.
구조체 혹은 클래스 구현부의 게터와 세터, 연산 프로퍼티에 대한 중복을 줄여줄 수 있는 기능을 지원한다.

@가 붙은 선언들이 바로 프로퍼티 래퍼이다.


간단한 예제

도시 이름을 대문자로 저장해야하는 구조체를 선언해야한다고 하자.

struct Adress {
	private var cityname: String = ""
    
    var city:String {
    	get { cityname }
        set { cityname = newValue.upeercased() }
    }
}

위와 같은 방식으로 작성하게 된다.
만약 연산 프로퍼티에서 작업한 내용이 다른 클래스나 구조체에 필요하다면 우리는 같은 내용을 여러번 작성해야 할 것이다.

우리는 이 내용을 연산 프로퍼티로 구현하여 중복을 줄여줄 수 있다.

@propertyWrapper
struct FixCase {
	private(set) var value: String = ""
    
    var wrappedValue: String {
    	get { value }
        set { value = newValue.uppercased() }
    }
    init (wrappedValue initialValue: String) {
    	self.wrappedValue = initialValue
    }
}

@propertyWrapper 지시자를 이용해야하며 게터와 세터가 포함되어야한다.

struct Contact {
	@FixCase var name: String
    @FixCase var city: String
    @FixCase var country: String
}

위의 방식으로 적용하여 사용할 수 있다. 구조체나 클래스의 선언부에 @FixCase를 붙인다.


참고 자료

zeddios_property wapper
핵심만 골라 배우는 SwiftUI기반의 iOS프로그래밍

profile
42seoul - C, C++ / YagomAcademy - Swift

0개의 댓글