참고자료
핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍(개정증보판)
https://product.kyobobook.co.kr/detail/S000208958658
핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍 | 닐 스미스 - 교보문고
핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍 |
product.kyobobook.co.kr
클래스나 구조체 인스턴스에 있는 프로퍼티에 값을 할당하거나 접근할 때 값을 저장하거나 읽어 내기전에 변환 작업이나 유효성 검사를 해야 할 경우가 종종 사용된다.
Comparable 프로토콜을 따르는 모든 타입에 사용 될 수 있도록 프로퍼티 래퍼를 구현해본다.
Comparable 프로토콜을 따르는 타입은 값이 같은지, 더 큰지, 작은지를 비교하는데 사용할 수 있다.
String, Int, Date, DateInterval, Characer 같은 다양한 타입이 이 프로토콜을 따른다.
@propertyWrapper
struct MinMaxVal<V: Comparable> {
var value: V
let max: V
let min: V
init(wrappendValue: V, min: V, max: V) {
value = wrappendValue
self.min = min
self.max = max
}
var wrappedValue: V {
get { return value }
set {
if newValue > max {
value = max
} else if newValue < min {
value = min
} else {
value = newValue
}
}
}
}
struct DateDemo {
// min : 현재날짜 / max : 한달 후 날짜 설정
@MinMaxVal(min: Date(), max: Calendar.current.date(byAdding: .month, value: 1, to: Date()!)
var value: Date = Date()
}
//디폴트로 현재 날짜가 프로퍼티에 설정되었다.
var dateDemo = DateDemo()
print(dateDemo.value) <======= 2019-08-23 20:05:13 +0000.
//프로퍼티에 10일 후의 날짜를 설정한다.
dateDemo.value = Calender.current.date(byAdding: .day, value: 10, to: Date())!
print(dateDemo.value) <======= 2019-09-02 20:05:13 +0000 //유효 범위 내에서 있으므로 프로퍼티에 저장된다.
//프로퍼티에 2달 후의 날짜를 설정한다.
dateDemo.value = Calendar.current.date(byAdding: .month, value: 2, to: Date())!
print(deteDemo.value). <======= 2019-09-23 20:08:54 +0000 //유효 범위 밖이므로 프로퍼티에는 최대값(1달)이 저장된다.'Swift > 문법' 카테고리의 다른 글
| [Swift] String split과 components 차이점 (0) | 2024.04.19 |
|---|---|
| XCode 변수 메모리 확인 방법 (0) | 2023.09.25 |
| [XCODE] LLDB 특정 DATA 메모리 덤프 저장하기 (0) | 2023.09.06 |
| [XCODE]LLDB 명령어 (디버깅 명령어) (0) | 2023.09.06 |
| [SWIFT]Set (0) | 2023.07.26 |