본문 바로가기

[Swift 5.1] Identifiable (SE-0261)

기술적인 이야기/애플 플랫폼 개발 2019. 11. 12.
반응형

이 변경점은 SE-0261 Identifiable Protocol에서 제안된 내용입니다.

이번에 새롭게 추가된 Identifiable 프로토콜은 아래처럼 생겼습니다.

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

그냥 단순하게 ID 하나를 구현하는 것임을 알 수 있습니다.

목적은 매우 단순합니다. 말 그대로 ID를 구현하는 것입니다. 다른게 비유하자면 신원 확인 가능성을 구현하는 것입니다. 대한민국 사람이라면 쉽게 이해할 수 있을만한 것이 바로 주민등록번호를 들 수 있을 것 같습니다.

아래의 예는 '한국인'이라는 구조체에 이 Identifiable을 구현하는 예제입니다.

struct Korean: Identifiable {
    let id: String
    let name: String
    init(name: String, juminNumber: String) {
        self.name = name
        self.id = juminNumber
    }
}

let me = Korean(name: "오랭이", juminNumber: "123456-7890123")
let you = Korean(name: "홍길동", juminNumber: "334455-1122334")

일단 신원 확인 용도라고 의도는 파악할 수 있습니다만, 동일성을 비교할 때도 활용이 가능할 수 있습니다. Equatable과는 다르게 ID 하나만으로 비교해야 하는데 이건 데이터베이스의 각 레코드가 고유 ID를 가지고 있다면 충분히 비교 용도로도 사용할 수 있겠지요.

728x90
반응형

댓글