두 가지의 옵션이 존재한다.
willSet
→ 값이 저장되기 전에 호출이된다.didSet
→ 새 값이 저장된 직후에 호출이된다.아래와 같이 구현이 가능하다.
var name: String = "Unknown" {
willSet(newName) {
print("현재 이름 = \(name), 바뀔 이름 = \(newName)")
}
}
또한, 파라미터 이름을 생략하여 아래와 같이도 설정할 수 있다.
var name: String = "Unknown" {
willSet {
print("현재 이름 = \(name), 바뀔 이름 = \(newValue)")
}
}
그러면, 언제 정확히 프로퍼티 옵저버가 작동이 될까?
name = "Miro"
위와 같이 새로운 값을 설정해주면, 아래와 같이 print 문이 찍히게 된다.
현재 이름 = Unknown, 바뀔 이름 = Miro
아래와 같이 구현이 가능하다.
var name: String = "Unknown" {
didSet(oldName) {
print("현재 이름 = \(name), 바뀌기 전 이름 = \(oldName)")
}
}
그리고, 파라미터를 생략한 아래와 같은 방식으로 코드를 짧게 할 수도 있다.
var name: String = "Unknown" {
didSet {
print("현재 이름 = \(name), 바뀌기 전 이름 = \(oldValue)")
}
}
그러면, 언제 정확히 프로퍼티 옵저버가 작동이 될까?
name = "Miro"
위와 같이 새로운 값을 설정해주면 didSet이 발동이 되는데,
현재 이름 = Miro, 바뀌기 전 이름 = UnKnown