김경록의 앱 개발 여정

[Swift] Identifiable 본문

TIL

[Swift] Identifiable

Kim Roks 2025. 3. 28. 23:11

 

Identifiable이란 무엇인가?

Swift의 Identifiable은 각 객체가 고유한 ID로 식별될 수 있도록 하는 프로토콜입니다. 이 프로토콜은 id라는 고유 속성을 요구하며, idHashableEquatable을 준수해야 합니다. 이를 통해 컬렉션 내에서 객체를 빠르게 구분하거나 중복을 방지할 수 있습니다.

protocol Identifiable {
    associatedtype ID: Hashable
    var id: ID { get }
}

기본적으로 UUIDInt, StringHashable한 타입이면 id로 사용할 수 있습니다.

 

언제 써야 하는가?

Identifiable을 언제 사용해야 하는지는 주로 객체의 고유성을 식별할 필요가 있는지에 따라 달라집니다. 다음과 같은 경우 Identifiable 적용이 유용합니다.

  1. 객체 간 중복 방지
    • 데이터 컬렉션에서 객체를 중복 없이 관리할 때 유용합니다.
  2. 빠른 탐색 및 조회
    • Set이나 Dictionary와 같이 해시 기반 자료구조에서 객체를 빠르게 찾거나 비교할 때 사용합니다.
  3. 비교와 변경 감지
    • 컬렉션에서 변경된 요소를 추적하거나, ID를 기준으로 동등성 검사가 필요한 경우 적합합니다.

 

DTO에 적용하는것도 유효할까?

public struct AccountData: Decodable, Identifiable {
    public let id: Int
    public let email: String?
}

 

이런 DTO를 구성하며 궁금했던 부분인데요

내가 생각하는 결론은 단순한 디코딩 용도라면 채택하지 않아도 된다 입니다.

 

다만 DTO가 아니라 비즈니스 로직이 포함된 DomainModel이고 해당 데이터를 딕셔너리등에서 탐색 해야하는 경우가 있다면 유용할거라고 생각됩니다.