<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Swift",
  "identifier" : "/documentation/Swift/Identifiable",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Swift"
    ],
    "preciseIdentifier" : "s:s12IdentifiableP"
  },
  "title" : "Identifiable"
}
-->

# Identifiable

A class of types whose instances hold the value of an entity with stable
identity.

```
protocol Identifiable<ID>
```

## Overview

Use the `Identifiable` protocol to provide a stable notion of identity to a
class or value type. For example, you could define a `User` type with an `id`
property that is stable across your app and your app’s database storage.
You could use the `id` property to identify a particular user even if other
data fields change, such as the user’s name.

`Identifiable` leaves the duration and scope of the identity unspecified.
Identities can have any of the following characteristics:

- Guaranteed always unique, like UUIDs.
- Persistently unique per environment, like database record keys.
- Unique for the lifetime of a process, like global incrementing integers.
- Unique for the lifetime of an object, like object identifiers.
- Unique within the current collection, like collection indices.

It’s up to both the conformer and the receiver of the protocol to document
the nature of the identity.

# Conforming to the Identifiable Protocol

`Identifiable` provides a default implementation for class types (using
`ObjectIdentifier`), which is only guaranteed to remain unique for the
lifetime of an object. If an object has a stronger notion of identity, it
may be appropriate to provide a custom implementation.

## Topics

### Specifying the Associated Type

[`ID`](/documentation/Swift/Identifiable/ID-swift.associatedtype)

A type representing the stable identity of the entity associated with
an instance.

### Specifying the Identified Item

[`id`](/documentation/Swift/Identifiable/id-8t2ws)

The stable identity of the entity associated with this instance.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)