A type that can initialize itself from a Firestore DocumentReference,
which makes it suitable for use with the @DocumentID property wrapper.
Firestore includes extensions that make String and DocumentReference
conform to DocumentIDWrappable.
Note that Firestore ignores fields annotated with @DocumentID when writing
so there is no requirement to convert from the wrapped type back to a
DocumentReference.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-03-11 UTC."],[],[],null,["# FirebaseFirestore Framework Reference\n\nProtocols\n=========\n\nThe following protocols are available globally.\n- `\n ``\n ``\n `\n\n ### [ListenerRegistration](/docs/reference/swift/firebasefirestore/api/reference/Protocols/ListenerRegistration)\n\n `\n ` \n Represents a listener that can be removed by calling remove. \n\n #### Declaration\n\n Swift \n\n protocol ListenerRegistration : NSObjectProtocol\n\n- `\n ``\n ``\n `\n\n ### [LocalCacheSettings](#/c:objc(pl)FIRLocalCacheSettings)\n\n `\n ` \n Marker protocol implemented by all supported cache settings.\n\n The two cache types supported are [PersistentCacheSettings](/docs/reference/swift/firebasefirestore/api/reference/Classes/PersistentCacheSettings) and [MemoryCacheSettings](/docs/reference/swift/firebasefirestore/api/reference/Classes/MemoryCacheSettings). Custom\n implementation is not supported. \n\n #### Declaration\n\n Swift \n\n protocol LocalCacheSettings\n\n- `\n ``\n ``\n `\n\n ### [MemoryGarbageCollectorSettings](#/c:objc(pl)FIRMemoryGarbageCollectorSettings)\n\n `\n ` \n Marker protocol implemented by all supported garbage collector settings.\n\n The two cache types supported are `MemoryEagerGCSettings` and [MemoryLRUGCSettings](/docs/reference/swift/firebasefirestore/api/reference/Classes/MemoryLRUGCSettings). Custom\n implementation is not supported. \n\n #### Declaration\n\n Swift \n\n protocol MemoryGarbageCollectorSettings\n\n- `\n ``\n ``\n `\n\n ### [DocumentIDWrappable](/docs/reference/swift/firebasefirestore/api/reference/Protocols/DocumentIDWrappable)\n\n `\n ` \n A type that can initialize itself from a Firestore [DocumentReference](/docs/reference/swift/firebasefirestore/api/reference/Classes/DocumentReference),\n which makes it suitable for use with the [@DocumentID](/docs/reference/swift/firebasefirestore/api/reference/Structs/DocumentID) property wrapper.\n\n Firestore includes extensions that make `String` and [DocumentReference](/docs/reference/swift/firebasefirestore/api/reference/Classes/DocumentReference)\n conform to `DocumentIDWrappable`.\n\n Note that Firestore ignores fields annotated with [@DocumentID](/docs/reference/swift/firebasefirestore/api/reference/Structs/DocumentID) when writing\n so there is no requirement to convert from the wrapped type back to a\n [DocumentReference](/docs/reference/swift/firebasefirestore/api/reference/Classes/DocumentReference). \n\n #### Declaration\n\n Swift \n\n public protocol DocumentIDWrappable\n\n- `\n ``\n ``\n `\n\n ### [ServerTimestampWrappable](/docs/reference/swift/firebasefirestore/api/reference/Protocols/ServerTimestampWrappable)\n\n `\n ` \n A type that can initialize itself from a Firestore Timestamp, which makes\n it suitable for use with the [@ServerTimestamp](/docs/reference/swift/firebasefirestore/api/reference/Structs/ServerTimestamp) property wrapper.\n\n Firestore includes extensions that make `Timestamp` and `Date` conform to\n `ServerTimestampWrappable`. \n\n #### Declaration\n\n Swift \n\n public protocol ServerTimestampWrappable"]]