Classes

The following classes are available globally.

RLMAppConfiguration

  • Properties representing the configuration of a client that communicate with a particular Realm application.

    RLMAppConfiguration options cannot be modified once the RLMApp using it is created. App’s configuration values are cached when the App is created so any modifications after it will not have any effect.

    See more

    Declaration

    Objective-C

    @interface RLMAppConfiguration : NSObject <NSCopying>

    Swift

    @_nonSendable(_assumed) class RLMAppConfiguration : NSObject, NSCopying

RLMApp

  • The RLMApp has the fundamental set of methods for communicating with a Realm application backend.

    This interface provides access to login and authentication.

    See more

    Declaration

    Objective-C

    
    @interface RLMApp : NSObject

    Swift

    @_nonSendable(_assumed) class RLMApp : NSObject, @unchecked Sendable
  • RLMArray is the container type in Realm used to define to-many relationships.

    Unlike an NSArray, RLMArrays hold a single type, specified by the objectClassName property. This is referred to in these docs as the “type” of the array.

    When declaring an RLMArray property, the type must be marked as conforming to a protocol by the same name as the objects it should contain (see the RLM_COLLECTION_TYPE macro). In addition, the property can be declared using Objective-C generics for better compile-time type safety.

    RLM_COLLECTION_TYPE(ObjectType)
    ...
    @property RLMArray<ObjectType *><ObjectType> *arrayOfObjectTypes;
    

    RLMArrays can be queried with the same predicates as RLMObject and RLMResults.

    RLMArrays cannot be created directly. RLMArray properties on RLMObjects are lazily created when accessed, or can be obtained by querying a Realm.

    Key-Value Observing

    RLMArray supports array key-value observing on RLMArray properties on RLMObject subclasses, and the invalidated property on RLMArray instances themselves is key-value observing compliant when the RLMArray is attached to a managed RLMObject (RLMArrays on unmanaged RLMObjects will never become invalidated).

    Because RLMArrays are attached to the object which they are a property of, they do not require using the mutable collection proxy objects from -mutableArrayValueForKey: or KVC-compatible mutation methods on the containing object. Instead, you can call the mutation methods on the RLMArray directly.

    See more

    Declaration

    Objective-C

    @interface RLMArray<RLMObjectType> : NSObject <RLMCollection>

    Swift

    @_nonSendable(_assumed) class RLMArray<RLMObjectType> : NSObject, RLMCollection where RLMObjectType : AnyObject
  • RLMAsymmetricObject is a base class used to define asymmetric Realm objects.

    Asymmetric objects can only be created using the createInRealm: function, and cannot be added, removed or queried. When created, asymmetric objects will be synced unidirectionally to the MongoDB database and cannot be accessed locally.

    Linking an asymmetric object within an Object is not allowed and will throw an error.

    The property types supported on RLMAsymmetricObject are the same as for RLMObject, except for that asymmetric objects can only link to embedded objects, so RLMObject and RLMArray<RLMObject> properties are not supported (RLMEmbeddedObject and RLMArray<RLEmbeddedObject> are).

    See more

    Declaration

    Objective-C

    @interface RLMAsymmetricObject : RLMObjectBase

    Swift

    @_nonSendable(_assumed) class RLMAsymmetricObject : RLMObjectBase
  • A task object which can be used to observe or cancel an async open.

    When a synchronized Realm is opened asynchronously, the latest state of the Realm is downloaded from the server before the completion callback is invoked. This task object can be used to observe the state of the download or to cancel it. This should be used instead of trying to observe the download via the sync session as the sync session itself is created asynchronously, and may not exist yet when -[RLMRealm asyncOpenWithConfiguration:completion:] returns.

    See more

    Declaration

    Objective-C

    
    @interface RLMAsyncOpenTask : NSObject

    Swift

    @_nonSendable(_assumed) class RLMAsyncOpenTask : NSObject, @unchecked Sendable

RLMBSON

  • MaxKey will always be the greatest value when comparing to other BSON types

    Declaration

    Objective-C

    
    @interface RLMMaxKey : NSObject

    Swift

    class RLMMaxKey : NSObject, @unchecked Sendable
  • MinKey will always be the smallest value when comparing to other BSON types

    Declaration

    Objective-C

    
    @interface RLMMinKey : NSObject

    Swift

    class RLMMinKey : NSObject, @unchecked Sendable
  • An RLMSortDescriptor stores a property name and a sort order for use with sortedResultsUsingDescriptors:. It is similar to NSSortDescriptor, but supports only the subset of functionality which can be efficiently run by Realm’s query engine.

    RLMSortDescriptor instances are immutable.

    See more

    Declaration

    Objective-C

    
    @interface RLMSortDescriptor : NSObject

    Swift

    @_nonSendable(_assumed) class RLMSortDescriptor : NSObject, @unchecked Sendable
  • A RLMCollectionChange object encapsulates information about changes to collections that are reported by Realm notifications.

    RLMCollectionChange is passed to the notification blocks registered with -addNotificationBlock on RLMArray and RLMResults, and reports what rows in the collection changed since the last time the notification block was called.

    The change information is available in two formats: a simple array of row indices in the collection for each type of change, and an array of index paths in a requested section suitable for passing directly to UITableView‘s batch update methods. A complete example of updating a UITableView named tv:

    [tv beginUpdates];
    [tv deleteRowsAtIndexPaths:[changes deletionsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];
    [tv insertRowsAtIndexPaths:[changes insertionsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];
    [tv reloadRowsAtIndexPaths:[changes modificationsInSection:0] withRowAnimation:UITableViewRowAnimationAutomatic];
    [tv endUpdates];
    

    All of the arrays in an RLMCollectionChange are always sorted in ascending order.

    See more

    Declaration

    Objective-C

    @interface RLMCollectionChange : NSObject

    Swift

    @_nonSendable(_assumed) class RLMCollectionChange : NSObject
  • Opaque credentials representing a specific Realm App user.

    See more

    Declaration

    Objective-C

    
    @interface RLMCredentials : NSObject

    Swift

    @_nonSendable(_assumed) class RLMCredentials : NSObject, @unchecked Sendable
  • A 128-bit IEEE 754-2008 decimal floating point number.

    This type is similar to Swift’s built-in Decimal type, but allocates bits differently, resulting in a different representable range. (NS)Decimal stores a significand of up to 38 digits long and an exponent from -128 to 127, while this type stores up to 34 digits of significand and an exponent from -6143 to 6144.

    See more

    Declaration

    Objective-C

    @interface RLMDecimal128 : NSObject <NSCopying>

    Swift

    @_nonSendable(_assumed) class RLMDecimal128 : NSObject, NSCopying, @unchecked Sendable
  • RLMDictionary is a container type in Realm representing a dynamic collection of key-value pairs.

    Unlike NSDictionary, RLMDictionarys hold a single key and value type. This is referred to in these docs as the “type” and “keyType” of the dictionary.

    When declaring an RLMDictionary property, the object type and keyType must be marked as conforming to a protocol by the same name as the objects it should contain.

    RLM_COLLECTION_TYPE(ObjectType)
    ...
    @property RLMDictionary<NSString *, ObjectType *><RLMString, ObjectType> *objectTypeDictionary;
    

    RLMDictionarys can be queried with the same predicates as RLMObject and RLMResults.

    RLMDictionarys cannot be created directly. RLMDictionary properties on RLMObjects are lazily created when accessed, or can be obtained by querying a Realm.

    RLMDictionary only supports NSString as a key. Realm disallows the use of . or $ characters within a dictionary key.

    Key-Value Observing

    RLMDictionary supports dictionary key-value observing on RLMDictionary properties on RLMObject subclasses, and the invalidated property on RLMDictionary instances themselves is key-value observing compliant when the RLMDictionary is attached to a managed RLMObject (RLMDictionarys on unmanaged RLMObjects will never become invalidated).

    See more

    Declaration

    Objective-C

    @interface RLMDictionary<RLMKeyType, RLMObjectType> : NSObject <RLMCollection>

    Swift

    @_nonSendable(_assumed) class RLMDictionary<RLMKeyType, RLMObjectType> : NSObject, RLMCollection where RLMKeyType : AnyObject, RLMObjectType : AnyObject
  • A RLMDictionaryChange object encapsulates information about changes to dictionaries that are reported by Realm notifications.

    RLMDictionaryChange is passed to the notification blocks registered with -addNotificationBlock on RLMDictionary, and reports what keys in the dictionary changed since the last time the notification block was called.

    See more

    Declaration

    Objective-C

    @interface RLMDictionaryChange : NSObject

    Swift

    @_nonSendable(_assumed) class RLMDictionaryChange : NSObject
  • A client for the email/password authentication provider which can be used to obtain a credential for logging in, and to perform requests specifically related to the email/password provider.

    See more

    Declaration

    Objective-C

    
    @interface RLMEmailPasswordAuth : RLMProviderClient

    Swift

    @_nonSendable(_assumed) class RLMEmailPasswordAuth : RLMProviderClient, @unchecked Sendable
  • RLMEmbeddedObject is a base class used to define Realm model objects.

    Embedded objects work similarly to normal objects, but are owned by a single parent Object (which itself may be embedded). Unlike normal top-level objects, embedded objects cannot be directly created in or added to a Realm. Instead, they can only be created as part of a parent object, or by assigning an unmanaged object to a parent object’s property. Embedded objects are automatically deleted when the parent object is deleted or when the parent is modified to no longer point at the embedded object, either by reassigning an RLMObject property or by removing the embedded object from the array containing it.

    Embedded objects can only ever have a single parent object which links to them, and attempting to link to an existing managed embedded object will throw an exception.

    The property types supported on RLMEmbeddedObject are the same as for RLMObject, except for that embedded objects cannot link to top-level objects, so RLMObject and RLMArray<RLMObject> properties are not supported (RLMEmbeddedObject and RLMArray<RLMEmbeddedObject> are).

    Embedded objects cannot have primary keys or indexed properties.

    See more

    Declaration

    Objective-C

    @interface RLMEmbeddedObject : RLMObjectBase <RLMThreadConfined>

    Swift

    @_nonSendable(_assumed) class RLMEmbeddedObject : RLMObjectBase, RLMThreadConfined

RLMSyncAppError

  • Extended information about a write which was rejected by the server.

    The server will sometimes reject writes made by the client for reasons such as permissions, additional server-side validation failing, or because the object didn’t match any flexible sync subscriptions. When this happens, a RLMSyncErrorWriteRejected error is reported which contains an array of RLMCompensatingWriteInfo objects in the RLMCompensatingWriteInfoKey userInfo key with information about what writes were rejected and why.

    This information is intended for debugging and logging purposes only. The reason strings are generated by the server and are not guaranteed to be stable, so attempting to programmatically do anything with them will break without warning.

    See more

    Declaration

    Objective-C

    
    @interface RLMCompensatingWriteInfo : NSObject

    Swift

    class RLMCompensatingWriteInfo : NSObject, @unchecked Sendable
  • Options to use when executing a findOneAndUpdate, findOneAndReplace, or findOneAndDelete command on a RLMMongoCollection.

    See more

    Declaration

    Objective-C

    @interface RLMFindOneAndModifyOptions : NSObject

    Swift

    @_nonSendable(_assumed) class RLMFindOneAndModifyOptions : NSObject
  • Options to use when executing a find command on a RLMMongoCollection.

    See more

    Declaration

    Objective-C

    @interface RLMFindOptions : NSObject

    Swift

    @_nonSendable(_assumed) class RLMFindOptions : NSObject
  • A class that represents the coordinates of a point formed by a latitude and a longitude value.

    • Latitude ranges between -90 and 90 degrees, inclusive.
    • Longitude ranges between -180 and 180 degrees, inclusive.
    • Altitude cannot have negative values.

    Values outside this ranges will return nil when trying to create a RLMGeospatialPoint.

    Note

    There is no dedicated type to store Geospatial points, instead points should be stored as GeoJson-shaped embedded object, as explained below. Geospatial queries (geoWithin) can only be executed in such a type of objects and will throw otherwise.

    Persisting geo points in Realm is currently done using duck-typing, which means that any model class with a specific shape can be queried as though it contained a geographical location. The recommended approach is using an embedded object.

    Warning

    This structure cannot be persisted and can only be used to build other geospatial shapes such as (RLMGeospatialBox, RLMGeospatialPolygon and RLMGeospatialCircle).

    Warning

    Altitude is not used in any of the query calculations.

    See more

    Declaration

    Objective-C

    @interface RLMGeospatialPoint : NSObject

    Swift

    class RLMGeospatialPoint : NSObject, @unchecked Sendable
  • A class that represents a rectangle, that can be used in a geospatial geoWithinquery.

    Warning

    This class cannot be persisted and can only be use within a geospatial geoWithin query.
    See more

    Declaration

    Objective-C

    @interface RLMGeospatialBox : NSObject <RLMGeospatial>

    Swift

    class RLMGeospatialBox : NSObject, RLMGeospatial, @unchecked Sendable
  • A class that represents a polygon, that can be used in a geospatial geoWithinquery.

    A RLMGeospatialPolygon describes a shape conformed of and outer Polygon, called outerRing, and 0 or more inner Polygons, called holes, which represents an unlimited number of internal holes inside the outer Polygon. A Polygon describes a shape conformed by at least three segments, where the last and the first RLMGeospatialPoint must be the same to indicate a closed polygon (meaning you need at least 4 points to define a polygon). Inner holes in a RLMGeospatialPolygon must be entirely inside the outer ring

    A hole has the following restrictions:

    • Holes may not cross, i.e. the boundary of a hole may not intersect both the interior and the exterior of any other hole.
    • Holes may not share edges, i.e. if a hole contains and edge AB, the no other hole may contain it.
    • Holes may share vertices, however no vertex may appear twice in a single hole.
    • No hole may be empty.
    • Only one nesting is allowed.

    Warning

    This class cannot be persisted and can only be use within a geospatial geoWithin query.

    See more

    Declaration

    Objective-C

    @interface RLMGeospatialPolygon : NSObject <RLMGeospatial>

    Swift

    class RLMGeospatialPolygon : NSObject, RLMGeospatial, @unchecked Sendable
  • This structure is a helper to represent/convert a distance. It can be used in geospatial queries like those represented by a RLMGeospatialCircle

    Warning

    This structure cannot be persisted and can only be used to build other geospatial shapes
    See more

    Declaration

    Objective-C

    @interface RLMDistance : NSObject

    Swift

    class RLMDistance : NSObject, @unchecked Sendable
  • A class that represents a circle, that can be used in a geospatial geoWithinquery.

    Warning

    This class cannot be persisted and can only be use within a geospatial geoWithin query.
    See more

    Declaration

    Objective-C

    @interface RLMGeospatialCircle : NSObject <RLMGeospatial>

    Swift

    class RLMGeospatialCircle : NSObject, RLMGeospatial, @unchecked Sendable
  • RLMLogger is used for creating your own custom logging logic.

    You can define your own logger creating an instance of RLMLogger and define the log function which will be invoked whenever there is a log message. Set this custom logger as you default logger using setDefaultLogger.

    RLMLogger.defaultLogger = [[RLMLogger alloc] initWithLevel:RLMLogLevelDebug
                                               logFunction:^(RLMLogLevel level, NSString * message) {
        NSLog(@"Realm Log - %lu, %@", (unsigned long)level, message);
    }];
    

    Note

    By default default log threshold level is RLMLogLevelInfo, and logging strings are output to Apple System Logger.
    See more

    Declaration

    Objective-C

    @interface RLMLogger : NSObject

    Swift

    class RLMLogger : NSObject
  • RLMMigration instances encapsulate information intended to facilitate a schema migration.

    A RLMMigration instance is passed into a user-defined RLMMigrationBlock block when updating the version of a Realm. This instance provides access to the old and new database schemas, the objects in the Realm, and provides functionality for modifying the Realm during the migration.

    See more

    Declaration

    Objective-C

    @interface RLMMigration : NSObject

    Swift

    @_nonSendable(_assumed) class RLMMigration : NSObject
  • The RLMMongoClient enables reading and writing on a MongoDB database via the Realm Cloud service.

    It provides access to instances of RLMMongoDatabase, which in turn provide access to specific RLMMongoCollections that hold your data.

    Note

    Before you can read or write data, a user must log in.

    See more

    Declaration

    Objective-C

    
    @interface RLMMongoClient : NSObject

    Swift

    @_nonSendable(_assumed) class RLMMongoClient : NSObject, @unchecked Sendable
  • Acts as a middleman and processes events with WatchStream

    See more

    Declaration

    Objective-C

    
    @interface RLMChangeStream : NSObject <RLMEventDelegate>

    Swift

    @_nonSendable(_assumed) class RLMChangeStream : NSObject, RLMEventDelegate, @unchecked Sendable
  • The RLMMongoCollection represents a MongoDB collection.

    You can get an instance from a RLMMongoDatabase.

    Create, read, update, and delete methods are available.

    Operations against the Realm Cloud server are performed asynchronously.

    Note

    Before you can read or write data, a user must log in.
    • Usage: RLMMongoClient *client = [self.app mongoClient:@“mongodb1”]; RLMMongoDatabase *database = [client databaseWithName:@“test_data”]; RLMMongoCollection *collection = [database collectionWithName:@“Dog”]; [collection insertOneDocument:@{@“name”: @“fido”, @“breed”: @“cane corso”} completion:…];

    See more

    Declaration

    Objective-C

    
    @interface RLMMongoCollection : NSObject

    Swift

    @_nonSendable(_assumed) class RLMMongoCollection : NSObject, @unchecked Sendable
  • The RLMMongoDatabase represents a MongoDB database, which holds a group of collections that contain your data.

    It can be retrieved from the RLMMongoClient.

    Use it to get RLMMongoCollections for reading and writing data.

    Note

    Before you can read or write data, a user must log in`.

    See more

    Declaration

    Objective-C

    
    @interface RLMMongoDatabase : NSObject

    Swift

    @_nonSendable(_assumed) class RLMMongoDatabase : NSObject, @unchecked Sendable
  • An HTTP request that can be made to an arbitrary server.

    See more

    Declaration

    Objective-C

    @interface RLMRequest : NSObject

    Swift

    @_nonSendable(_assumed) class RLMRequest : NSObject
  • The contents of an HTTP response.

    See more

    Declaration

    Objective-C

    @interface RLMResponse : NSObject

    Swift

    @_nonSendable(_assumed) class RLMResponse : NSObject
  • Transporting protocol for foreign interfaces. Allows for custom request/response handling.

    See more

    Declaration

    Objective-C

    @interface RLMNetworkTransport : NSObject <RLMNetworkTransport>

    Swift

    @_nonSendable(_assumed) class RLMNetworkTransport : NSObject, RLMNetworkTransportProtocol, @unchecked Sendable
  • RLMObject is a base class for model objects representing data stored in Realms.

    Define your model classes by subclassing RLMObject and adding properties to be managed. Then instantiate and use your custom subclasses instead of using the RLMObject class directly.

    // Dog.h
    @interface Dog : RLMObject
    @property NSString *name;
    @property BOOL      adopted;
    @end
    
    // Dog.m
    @implementation Dog
    @end //none needed
    

    Supported property types

    • NSString
    • NSInteger, int, long, float, and double
    • BOOL or bool
    • NSDate
    • NSData
    • NSNumber<X>, where X is one of RLMInt, RLMFloat, RLMDouble or RLMBool, for optional number properties
    • RLMObject subclasses, to model many-to-one relationships.
    • RLMArray<X>, where X is an RLMObject subclass, to model many-to-many relationships.

    Querying

    You can initiate queries directly via the class methods: allObjects, objectsWhere:, and objectsWithPredicate:. These methods allow you to easily query a custom subclass for instances of that class in the default Realm.

    To search in a Realm other than the default Realm, use the allObjectsInRealm:, objectsInRealm:where:, and objectsInRealm:withPredicate: class methods.

    See

    RLMRealm

    Relationships

    See our Realm Swift Documentation for more details.

    Key-Value Observing

    All RLMObject properties (including properties you create in subclasses) are Key-Value Observing compliant, except for realm and objectSchema.

    Keep the following tips in mind when observing Realm objects:

    1. Unlike NSMutableArray properties, RLMArray properties do not require using the proxy object returned from -mutableArrayValueForKey:, or defining KVC mutation methods on the containing class. You can simply call methods on the RLMArray directly; any changes will be automatically observed by the containing object.
    2. Unmanaged RLMObject instances cannot be added to a Realm while they have any observed properties.
    3. Modifying managed RLMObjects within -observeValueForKeyPath:ofObject:change:context: is not recommended. Properties may change even when the Realm is not in a write transaction (for example, when -[RLMRealm refresh] is called after changes are made on a different thread), and notifications sent prior to the change being applied (when NSKeyValueObservingOptionPrior is used) may be sent at times when you cannot begin a write transaction.
    See more

    Declaration

    Objective-C

    @interface RLMObject : RLMObjectBase <RLMThreadConfined>

    Swift

    @_nonSendable(_assumed) class RLMObject : RLMObjectBase, RLMThreadConfined
  • Information about a specific property which changed in an RLMObject change notification.

    See more

    Declaration

    Objective-C

    @interface RLMPropertyChange : NSObject

    Swift

    @_nonSendable(_assumed) class RLMPropertyChange : NSObject
  • A 12-byte (probably) unique object identifier.

    ObjectIds are similar to a GUID or a UUID, and can be used to uniquely identify objects without a centralized ID generator. An ObjectID consists of:

    1. A 4 byte timestamp measuring the creation time of the ObjectId in seconds since the Unix epoch.
    2. A 5 byte random value
    3. A 3 byte counter, initialized to a random value.

    ObjectIds are intended to be fast to generate. Sorting by an ObjectId field will typically result in the objects being sorted in creation order.

    See more

    Declaration

    Objective-C

    @interface RLMObjectId : NSObject <NSCopying>

    Swift

    @_nonSendable(_assumed) class RLMObjectId : NSObject, NSCopying, @unchecked Sendable
  • This class represents Realm model object schemas.

    When using Realm, RLMObjectSchema instances allow performing migrations and introspecting the database’s schema.

    Object schemas map to tables in the core database.

    See more

    Declaration

    Objective-C

    
    @interface RLMObjectSchema : NSObject <NSCopying>

    Swift

    @_nonSendable(_assumed) class RLMObjectSchema : NSObject, NSCopying, @unchecked Sendable
  • RLMProperty instances represent properties managed by a Realm in the context of an object schema. Such properties may be persisted to a Realm file or computed from other data from the Realm.

    When using Realm, RLMProperty instances allow performing migrations and introspecting the database’s schema.

    These property instances map to columns in the core database.

    See more

    Declaration

    Objective-C

    
    @interface RLMProperty : NSObject

    Swift

    @_nonSendable(_assumed) class RLMProperty : NSObject, @unchecked Sendable
  • An RLMPropertyDescriptor instance represents a specific property on a given class.

    See more

    Declaration

    Objective-C

    
    @interface RLMPropertyDescriptor : NSObject

    Swift

    @_nonSendable(_assumed) class RLMPropertyDescriptor : NSObject, @unchecked Sendable
  • Base provider client interface.

    See more

    Declaration

    Objective-C

    @interface RLMProviderClient : NSObject

    Swift

    @_nonSendable(_assumed) class RLMProviderClient : NSObject, @unchecked Sendable
  • A client which can be used to register devices with the server to receive push notificatons

    See more

    Declaration

    Objective-C

    
    @interface RLMPushClient : NSObject

    Swift

    @_nonSendable(_assumed) class RLMPushClient : NSObject, @unchecked Sendable
  • An RLMRealm instance (also referred to as “a Realm”) represents a Realm database.

    Realms can either be stored on disk (see +[RLMRealm realmWithURL:]) or in memory (see RLMRealmConfiguration).

    RLMRealm instances are cached internally, and constructing equivalent RLMRealm objects (for example, by using the same path or identifier) multiple times on a single thread within a single iteration of the run loop will normally return the same RLMRealm object.

    If you specifically want to ensure an RLMRealm instance is destroyed (for example, if you wish to open a Realm, check some property, and then possibly delete the Realm file and re-open it), place the code which uses the Realm within an @autoreleasepool {} and ensure you have no other strong references to it.

    Warning

    Non-frozen RLMRealm instances are thread-confined and cannot be shared across threads or dispatch queues. Trying to do so will cause an exception to be thrown. You must call this method on each thread you want to interact with the Realm on. For dispatch queues, this means that you must call it in each block which is dispatched, as a queue is not guaranteed to run all of its blocks on the same thread.
    See more

    Declaration

    Objective-C

    @interface RLMRealm : NSObject

    Swift

    @_nonSendable(_assumed) class RLMRealm : NSObject
  • A token which is returned from methods which subscribe to changes to a Realm.

    Change subscriptions in Realm return an RLMNotificationToken instance, which can be used to unsubscribe from the changes. You must store a strong reference to the token for as long as you want to continue to receive notifications. When you wish to stop, call the -invalidate method. Notifications are also stopped if the token is deallocated.

    See more

    Declaration

    Objective-C

    @interface RLMNotificationToken : NSObject

    Swift

    @_nonSendable(_assumed) class RLMNotificationToken : NSObject, @unchecked Sendable
  • An RLMRealmConfiguration instance describes the different options used to create an instance of a Realm.

    RLMRealmConfiguration instances are just plain NSObjects. Unlike RLMRealms and RLMObjects, they can be freely shared between threads as long as you do not mutate them.

    Creating configuration objects for class subsets (by setting the objectClasses property) can be expensive. Because of this, you will normally want to cache and reuse a single configuration object for each distinct configuration rather than creating a new object each time you open a Realm.

    See more

    Declaration

    Objective-C

    @interface RLMRealmConfiguration : NSObject <NSCopying>

    Swift

    @_nonSendable(_assumed) class RLMRealmConfiguration : NSObject, NSCopying
  • RLMResults is an auto-updating container type in Realm returned from object queries. It represents the results of the query in the form of a collection of objects.

    RLMResults can be queried using the same predicates as RLMObject and RLMArray, and you can chain queries to further filter results.

    RLMResults always reflect the current state of the Realm on the current thread, including during write transactions on the current thread. The one exception to this is when using for...in fast enumeration, which will always enumerate over the objects which matched the query when the enumeration is begun, even if some of them are deleted or modified to be excluded by the filter during the enumeration.

    RLMResults are lazily evaluated the first time they are accessed; they only run queries when the result of the query is requested. This means that chaining several temporary RLMResults to sort and filter your data does not perform any extra work processing the intermediate state.

    Once the results have been evaluated or a notification block has been added, the results are eagerly kept up-to-date, with the work done to keep them up-to-date done on a background thread whenever possible.

    RLMResults cannot be directly instantiated.

    See more

    Declaration

    Objective-C

    @interface RLMResults<RLMObjectType>
        : NSObject <RLMCollection, NSFastEnumeration>

    Swift

    @_nonSendable(_assumed) class RLMResults<RLMObjectType> : NSObject, RLMCollection, NSFastEnumeration where RLMObjectType : AnyObject
  • RLMLinkingObjects is an auto-updating container type. It represents a collection of objects that link to its parent object.

    For more information, please see the “Inverse Relationships” section in the documentation.

    Declaration

    Objective-C

    @interface RLMLinkingObjects<RLMObjectType : RLMObject *> : RLMResults

    Swift

    @_nonSendable(_assumed) class RLMLinkingObjects<RLMObjectType> : RLMResults<AnyObject> where RLMObjectType : RLMObject
  • RLMSchema instances represent collections of model object schemas managed by a Realm.

    When using Realm, RLMSchema instances allow performing migrations and introspecting the database’s schema.

    Schemas map to collections of tables in the core database.

    See more

    Declaration

    Objective-C

    @interface RLMSchema : NSObject <NSCopying>

    Swift

    @_nonSendable(_assumed) class RLMSchema : NSObject, NSCopying, @unchecked Sendable
  • A RLMSectionedResultsChange object encapsulates information about changes to sectioned results that are reported by Realm notifications.

    RLMSectionedResultsChange is passed to the notification blocks registered with -addNotificationBlock on RLMSectionedResults, and reports what sections and rows in the collection changed since the last time the notification block was called.

    A complete example of updating a UITableView named tv:

    [tv beginUpdates];
    [tv deleteRowsAtIndexPaths:changes.deletions withRowAnimation:UITableViewRowAnimationAutomatic];
    [tv insertRowsAtIndexPaths:changes.insertions withRowAnimation:UITableViewRowAnimationAutomatic];
    [tv reloadRowsAtIndexPaths:changes.modifications withRowAnimation:UITableViewRowAnimationAutomatic];
    [tv insertSections:changes.sectionsToInsert withRowAnimation:UITableViewRowAnimationAutomatic];
    [tv deleteSections:changes.sectionsToRemove withRowAnimation:UITableViewRowAnimationAutomatic];
    [tv endUpdates];
    

    All of the arrays in an RLMSectionedResultsChange are always sorted in ascending order.

    See more

    Declaration

    Objective-C

    @interface RLMSectionedResultsChange : NSObject

    Swift

    @_nonSendable(_assumed) class RLMSectionedResultsChange : NSObject
  • An RLMSection contains the objects which belong to a specified section key.

    See more

    Declaration

    Objective-C

    @interface RLMSection<RLMKeyType : id <RLMValue>, RLMObjectType>
        : NSObject <RLMSectionedResult>

    Swift

    @_nonSendable(_assumed) class RLMSection<RLMKeyType, RLMObjectType> : NSObject, RLMSectionedResult where RLMKeyType : RLMValue, RLMObjectType : AnyObject
  • A lazily evaluated collection that holds elements in sections determined by a section key.

    See more

    Declaration

    Objective-C

    @interface RLMSectionedResults<RLMKeyType : id <RLMValue>,
                                   RLMObjectType : id <RLMValue>>
        : NSObject <RLMSectionedResult>

    Swift

    @_nonSendable(_assumed) class RLMSectionedResults<RLMKeyType, RLMObjectType> : NSObject, RLMSectionedResult where RLMKeyType : RLMValue, RLMObjectType : RLMValue
  • A collection datatype used for storing distinct objects.

    Note

    RLMSet supports storing primitive and RLMObject types. RLMSet does not support storing Embedded Realm Objects.
    See more

    Declaration

    Objective-C

    @interface RLMSet<RLMObjectType> : NSObject <RLMCollection>

    Swift

    @_nonSendable(_assumed) class RLMSet<RLMObjectType> : NSObject, RLMCollection where RLMObjectType : AnyObject
  • A configuration object representing configuration state for a Realm which is intended to sync with a Realm Object Server.

    See more

    Declaration

    Objective-C

    @interface RLMSyncConfiguration : NSObject

    Swift

    @_nonSendable(_assumed) class RLMSyncConfiguration : NSObject
  • A manager which serves as a central point for sync-related configuration.

    See more

    Declaration

    Objective-C

    
    @interface RLMSyncManager : NSObject

    Swift

    @_nonSendable(_assumed) class RLMSyncManager : NSObject, @unchecked Sendable
  • Options for configuring timeouts and intervals in the sync client.

    See more

    Declaration

    Objective-C

    @interface RLMSyncTimeoutOptions : NSObject

    Swift

    @_nonSendable(_assumed) class RLMSyncTimeoutOptions : NSObject
  • A token object corresponding to a progress notification block on a session object.

    To stop notifications manually, call -invalidate on it. Notifications should be stopped before the token goes out of scope or is destroyed.

    Declaration

    Objective-C

    
    @interface RLMProgressNotificationToken : RLMNotificationToken

    Swift

    @_nonSendable(_assumed) class RLMProgressNotificationToken : RLMNotificationToken, @unchecked Sendable
  • An object encapsulating an Atlas App Services “session”. Sessions represent the communication between the client (and a local Realm file on disk), and the server (and a remote Realm with a given partition value stored on Atlas App Services).

    Sessions are always created by the SDK and vended out through various APIs. The lifespans of sessions associated with Realms are managed automatically. Session objects can be accessed from any thread.

    See more

    Declaration

    Objective-C

    
    @interface RLMSyncSession : NSObject

    Swift

    @_nonSendable(_assumed) class RLMSyncSession : NSObject, @unchecked Sendable

Error action token

  • An opaque token returned as part of certain errors. It can be passed into certain APIs to perform certain actions.

    See

    RLMSyncErrorClientResetError, RLMSyncErrorPermissionDeniedError

    Declaration

    Objective-C

    
    @interface RLMSyncErrorActionToken : NSObject

    Swift

    @_nonSendable(_assumed) class RLMSyncErrorActionToken : NSObject, @unchecked Sendable

Subscription States

  • RLMSyncSubscription is used to define a Flexible Sync subscription obtained from querying a subscription set, which can be used to read or remove/update a committed subscription.

    See more

    Declaration

    Objective-C

    @interface RLMSyncSubscription : NSObject

    Swift

    @_nonSendable(_assumed) class RLMSyncSubscription : NSObject
  • RLMSyncSubscriptionSet is a collection of RLMSyncSubscriptions. This is the entry point for adding and removing RLMSyncSubscriptions.

    See more

    Declaration

    Objective-C

    @interface RLMSyncSubscriptionSet : NSObject <NSFastEnumeration>

    Swift

    @_nonSendable(_assumed) class RLMSyncSubscriptionSet : NSObject, NSFastEnumeration
  • An object intended to be passed between threads containing a thread-safe reference to its thread-confined object.

    To resolve a thread-safe reference on a target Realm on a different thread, pass to -[RLMRealm resolveThreadSafeReference:].

    Warning

    A RLMThreadSafeReference object must be resolved at most once. Failing to resolve a RLMThreadSafeReference will result in the source version of the Realm being pinned until the reference is deallocated.

    Note

    Prefer short-lived RLMThreadSafeReferences as the data for the version of the source Realm will be retained until all references have been resolved or deallocated.

    See more

    Declaration

    Objective-C

    
    @interface RLMThreadSafeReference<__covariant Confined : id <RLMThreadConfined>>
        : NSObject

    Swift

    @_nonSendable(_assumed) class RLMThreadSafeReference<Confined> : NSObject, @unchecked Sendable where Confined : RLMThreadConfined
  • The result of an updateOne or updateMany operation a RLMMongoCollection.

    See more

    Declaration

    Objective-C

    
    @interface RLMUpdateResult : NSObject

    Swift

    @_nonSendable(_assumed) class RLMUpdateResult : NSObject, @unchecked Sendable
  • A RLMUser instance represents a single Realm App user account.

    A user may have one or more credentials associated with it. These credentials uniquely identify the user to the authentication provider, and are used to sign into an Atlas App Services user account.

    Note that user objects are only vended out via SDK APIs, and cannot be directly initialized. User objects can be accessed from any thread.

    See more

    Declaration

    Objective-C

    
    @interface RLMUser : NSObject

    Swift

    @_nonSendable(_assumed) class RLMUser : NSObject, @unchecked Sendable

User info classes

  • An identity of a user. A user can have multiple identities, usually associated with multiple providers. Note this is different from a user’s unique identifier string. @seeAlso RLMUser.identifier

    See more

    Declaration

    Objective-C

    
    @interface RLMUserIdentity : NSObject

    Swift

    @_nonSendable(_assumed) class RLMUserIdentity : NSObject, @unchecked Sendable
  • A profile for a given User.

    See more

    Declaration

    Objective-C

    
    @interface RLMUserProfile : NSObject

    Swift

    @_nonSendable(_assumed) class RLMUserProfile : NSObject, @unchecked Sendable
  • UserAPIKey model for APIKeys recevied from the server.

    See more

    Declaration

    Objective-C

    
    @interface RLMUserAPIKey : NSObject

    Swift

    @_nonSendable(_assumed) class RLMUserAPIKey : NSObject, @unchecked Sendable