TIL
[Swift] Identifiable
Kim Roks
2025. 3. 28. 23:11
Identifiable이란 무엇인가?
Swift의 Identifiable은 각 객체가 고유한 ID로 식별될 수 있도록 하는 프로토콜입니다. 이 프로토콜은 id라는 고유 속성을 요구하며, id는 Hashable 및 Equatable을 준수해야 합니다. 이를 통해 컬렉션 내에서 객체를 빠르게 구분하거나 중복을 방지할 수 있습니다.
protocol Identifiable {
associatedtype ID: Hashable
var id: ID { get }
}
기본적으로 UUID나 Int, String 등 Hashable한 타입이면 id로 사용할 수 있습니다.
언제 써야 하는가?
Identifiable을 언제 사용해야 하는지는 주로 객체의 고유성을 식별할 필요가 있는지에 따라 달라집니다. 다음과 같은 경우 Identifiable 적용이 유용합니다.
- 객체 간 중복 방지
- 데이터 컬렉션에서 객체를 중복 없이 관리할 때 유용합니다.
- 빠른 탐색 및 조회
- Set이나 Dictionary와 같이 해시 기반 자료구조에서 객체를 빠르게 찾거나 비교할 때 사용합니다.
- 비교와 변경 감지
- 컬렉션에서 변경된 요소를 추적하거나, ID를 기준으로 동등성 검사가 필요한 경우 적합합니다.
DTO에 적용하는것도 유효할까?
public struct AccountData: Decodable, Identifiable {
public let id: Int
public let email: String?
}
이런 DTO를 구성하며 궁금했던 부분인데요
내가 생각하는 결론은 단순한 디코딩 용도라면 채택하지 않아도 된다 입니다.
다만 DTO가 아니라 비즈니스 로직이 포함된 DomainModel이고 해당 데이터를 딕셔너리등에서 탐색 해야하는 경우가 있다면 유용할거라고 생각됩니다.