728x90
반응형
struct Weather {
let icon, description: String
let wind: Double
let humidity, temp, tempMax, tempMin: Int
var tempLabel: String {
return "현재 온도는 \(temp)°"
}
var maxMinLabel: String {
return "최고 \(tempMax)° 최저 \(tempMin)°"
}
var humidityLabel: String {
return "현재 습도는 \(humidity)% 입니다."
}
var windLabel: String {
return "현재 풍속은 \(wind)m/s 입니다."
}
var descriptionLabel: String {
return description.convertKorean()
}
}
우와,, 나 이렇게,,,,,, 구조체에 프로퍼티를 추가하면 당연히 초기화도 해줘야 된다고 생각했다......
왜지ㅣ......? 왜.. 안뜨지?
왜 안뜨는지 답 찾아내서 추가하자.
답은,, 연산 프로퍼티는 값을 저장할 곳이 없다. 긍까 얘는 다른 저장 프로퍼티를 사용할 아이인데.. 그렇다는 것은 애초에 초기화해줄 필요도 없는 것이다...으악..
Weather 모델에서 연산 프로퍼티를 통해서 기존 뷰컨에서 이렇게 적었던 코드를
모델에서 처리해줌으로써 데이터 가공을 뷰컨이 아닌 모델에서 처리할 수 있게끔 했다. 는 사실 멘토님 핃백임...감사함당..ㅎ😻
매번 항상 프로퍼티 옵저버랑, 타입 프로퍼티, 연산 프로퍼티 이놈자식들이 너무 어려운데... 그래도 쓰고 나면 싱낭당...;;..ㅎㅎ
여하튼, 이번에도 어케 쓰겠다고 했다가 무한 재귀라고 해야 하나 그런 오류 메시지가 뜨도록 잘못 써줘버렸다..
연산 프로퍼티는 다른 저장 프로퍼티가 필요한 놈이다. 그렇기에 읽거나 쓸 수 있는 다른 저장 프로퍼티가 먼저 필요하다.
get : 연산 후 값을 가져오는 것
set : 연산하는 것
get 구문 자체를 생략해줄 수도 있기에 return으로 바로 적어줄 수 있다!
set만 써줄 수 없다는 점!
get만 썼을 시에 set으로 접근하는 것은 불가능하다는 점!
긍데 더 조은 방법 잇으면 알려주세여...
728x90
반응형
'⭐️ 개발 > Code Refactor' 카테고리의 다른 글
[Refactor] Enum을 사용해서 화면 분기처리하기 (0) | 2022.08.13 |
---|---|
[리팩토링] 캐치미 프로젝트에서 프로퍼티 옵저버 적용하기 (1) | 2022.08.02 |