Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- custombottomsheet
- rxdatasources
- BFS
- domain data
- swift concurrency
- Tuist
- button configuration
- swift dashed line
- task cancel
- task cancellation
- swift navigationcontroller
- swift 점선
- RxSwift
- swift bottomsheet
- uikit toast
- identifiable
- swift 백준
- 타임라인 포맷팅
- tusit font 추가 방법
- traits
- UIKit
- custom navigation bar
- reactorkit
- SWIFT
- paragraph style
- coordinator
- swift custom ui
- custom ui
- DP
- claen architecture
Archives
- Today
- Total
김경록의 앱 개발 여정
[Swift] Identifiable 본문
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이고 해당 데이터를 딕셔너리등에서 탐색 해야하는 경우가 있다면 유용할거라고 생각됩니다.
'TIL' 카테고리의 다른 글
[Swift Concurrency] Task의 취소 (0) | 2025.04.18 |
---|---|
[Swift Concurrency] Structured Concurrency 구조적 동시성 (0) | 2025.04.15 |
[RxSwift] Single<Void> 와 Completable (0) | 2025.03.13 |
[Clean Architecture] DTO와 도메인 모델의 차이와 분리해서 사용해야하는 이유 (0) | 2025.03.13 |
[Swift] 유튜브처럼 타임라인 포맷팅하기 (0) | 2025.03.10 |