스위프트 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프로그래밍