Protocols
The following protocols are available globally.
-
A protocol which defines a default identity for Realm Objects
Declaraing your Object subclass as conforming to this protocol will supply a default implemention for
Identifiable
‘sid
which works for Realm Objects:// Automatically conforms to `Identifiable` class MyObjectType: Object, ObjectKeyIdentifiable { // ... }
You can also manually conform to
See moreIdentifiable
if you wish, but note that using the object’s memory address does not work for managed objects.Declaration
Swift
public protocol ObjectKeyIdentifiable : Object, Identifiable
-
A type which can be passed to
valuePublisher()
orchangesetPublisher()
.Declaration
Swift
@available(OSX 10.15, watchOS 6.0, iOS 13.0, iOSApplicationExtension 13.0, OSXApplicationExtension 10.15, tvOS 13.0, *) public protocol RealmSubscribable
-
An enum type which can be stored on a Realm Object.
Only
@objc
enums backed by an Int can be stored on a Realm object, and the enum type must explicitly conform to this protocol. For example:@objc enum class MyEnum: Int, RealmEnum { case first = 1 case second = 2 case third = 7 } class MyModel: Object { @objc dynamic enumProperty = MyEnum.first let optionalEnumProperty = RealmOptional<MyEnum>() }
Declaration
Swift
public protocol RealmEnum : RealmOptionalType, _ManagedPropertyType
-
A protocol describing types that can parameterize a
RealmOptional
.Declaration
Swift
public protocol RealmOptionalType
-
A type which can be stored in a Realm List or Results.
Declaring additional types as conforming to this protocol will not make them actually work. Most of the logic for how to store values in Realm is not implemented in Swift and there is currently no extension mechanism for supporting more types.
Declaration
Swift
public protocol RealmCollectionValue : Equatable
-
Types of properties which can be used with the minimum and maximum value APIs.
See
min(ofProperty:)
,max(ofProperty:)
Declaration
Swift
public protocol MinMaxType
-
Types of properties which can be used with the sum and average value APIs.
See
sum(ofProperty:)
,average(ofProperty:)
Declaration
Swift
public protocol AddableType
-
Objects of types which conform to
ThreadConfined
can be managed by a Realm, which will make them bound to a thread-specificRealm
instance. Managed objects must be explicitly exported and imported to be passed between threads.Managed instances of objects conforming to this protocol can be converted to a thread-safe reference for transport between threads by passing to the
ThreadSafeReference(to:)
constructor.Note that only types defined by Realm can meaningfully conform to this protocol, and defining new classes which attempt to conform to it will not make them work with
See moreThreadSafeReference
.Declaration
Swift
public protocol ThreadConfined