728x90
Computed property란?
클래스, 구조체 또는 열거형 내에서 정의되는 프로퍼티의 한 유형이다.
이 프로퍼티는 값을 직접 저장하지 않고, 대신 호출될 때마다 특정 연산을 수행하여 값을 계산해서 제공한다.
쉽게 말해 저장 프로퍼티에 의존하거나 다른 계산을 통해 동적으로 값을 결정해준다.
keypath 표현식(\)이란?
\는 키 경로(Key Path)를 나타내는 표기법이다.
키 경로는 객체의 특정 프로퍼티로의 접근 경로를 나타내고 데이터 바인딩이나 값 관찰, 컬렉션의 요소등을 다룰 때 유용하게 사용된다.
type safe한 방식으로 객체의 프로퍼티에 접근할 수 있다.
struct Person {
var name: String
}
let person = Person(name: "John")
let keyPath = \Person.name
let name = person[keyPath: keyPath]
print(name) // 출력: John
computed property 적용 전
let models = appSearchResult.results.map { result -> DetailModel in
return DetailModel(appIcon: result.artworkUrl100,
title: result.trackName,
description: result.description,
company: result.sellerName,
mockupImage: result.screenshotUrls)
}
위 코드는 appSearchResult.results 배열의 각 요소를 DetailModel로 변환하는 과정이다.
computed property 적용
var uiModel: DetailModel { .init(appIcon: artworkUrl100,
title: trackName,
description: description,
company: sellerName,
mockupImage: screenshotUrls)
}
let models = appSearchResult.results.map(\.uiModel)
computed property는 값을 직접 저장하지 않으므로 extension에 작성이 가능하다.
AppResult 구조체에 uiModel이라는 computed property를 추가하여 DetailModel을 반환하게 했다.
그 결과, map 함수 내에서 복잡한 클로저 대신 키 경로를 사용하여 간결하게 표현을 할 수 있게 되었다.
레퍼런스
https://www.avanderlee.com/swift/computed-property/
'iOS' 카테고리의 다른 글
피시테일 파카와 인이어를 통해 알아보는 아키텍처 공부의 필요성 (2) | 2024.01.24 |
---|