Classes

The following classes are available globally.

  • Object is a class used to define Realm model objects.

    In Realm you define your model classes by subclassing Object and adding properties to be managed. You then instantiate and use your custom subclasses instead of using the Object class directly.

    class Dog: Object {
        @objc dynamic var name: String = ""
        @objc dynamic var adopted: Bool = false
        let siblings = List<Dog>()
    }
    

    Supported property types

    • String, NSString
    • Int
    • Int8, Int16, Int32, Int64
    • Float
    • Double
    • Bool
    • Date, NSDate
    • Data, NSData
    • @objc enum which has been delcared as conforming to RealmEnum.
    • RealmOptional<Value> for optional numeric properties
    • Object subclasses, to model many-to-one relationships
    • List<Element>, to model many-to-many relationships

    String, NSString, Date, NSDate, Data, NSData and Object subclass properties can be declared as optional. Int, Int8, Int16, Int32, Int64, Float, Double, Bool, enum, and List properties cannot. To store an optional number, use RealmOptional<Int>, RealmOptional<Float>, RealmOptional<Double>, or RealmOptional<Bool> instead, which wraps an optional numeric value. Lists cannot be optional at all.

    All property types except for List and RealmOptional must be declared as @objc dynamic var. List and RealmOptional properties must be declared as non-dynamic let properties. Swift lazy properties are not allowed.

    Note that none of the restrictions listed above apply to properties that are configured to be ignored by Realm.

    Querying

    You can retrieve all objects of a given type from a Realm by calling the objects(_:) instance method.

    Relationships

    See our Cocoa guide for more details.

    See more

    Declaration

    Swift

    @objc(RealmSwiftObject)
    open class Object : RLMObjectBase, RealmCollectionValue
    extension Object: Combine.ObservableObject
    extension Object: RealmSubscribable
    extension Object: ThreadConfined
  • List is the container type in Realm used to define to-many relationships.

    Like Swift’s Array, List is a generic type that is parameterized on the type it stores. This can be either an Object subclass or one of the following types: Bool, Int, Int8, Int16, Int32, Int64, Float, Double, String, Data, and Date (and their optional versions)

    Unlike Swift’s native collections, Lists are reference types, and are only immutable if the Realm that manages them is opened as read-only.

    Lists can be filtered and sorted with the same predicates as Results<Element>.

    Properties of List type defined on Object subclasses must be declared as let and cannot be dynamic.

    See more

    Declaration

    Swift

    public final class List<Element> : ListBase where Element : RealmCollectionValue
    extension List: ObservableObject, RealmSubscribable
    extension List: RealmCollection
    extension List: MutableCollection
    extension List: Decodable where Element: Decodable
    extension List: Encodable where Element: Encodable
  • A RealmOptional instance represents an optional value for types that can’t be directly declared as @objc in Swift, such as Int, Float, Double, and Bool.

    To change the underlying value stored by a RealmOptional instance, mutate the instance’s value property.

    See more

    Declaration

    Swift

    public final class RealmOptional<Value> : RLMOptionalBase where Value : RealmOptionalType
    extension RealmOptional: Codable where Value: Codable

Permissions

  • A permission which can be applied to a Realm, Class, or specific Object.

    Permissions are applied by adding the permission to the RealmPermission singleton object, the ClassPermission object for the desired class, or to a user-defined List property on a specific Object instance. The meaning of each of the properties of Permission depend on what the permission is applied to, and so are left undocumented here. See RealmPrivileges, ClassPrivileges, and ObjectPrivileges for details about what each of the properties mean when applied to that type.

    See more

    Declaration

    Swift

    @objc(RealmSwiftPermission)
    public class Permission : Object
  • A Role within the permissions system.

    A Role consists of a name for the role and a list of users which are members of the role. Roles are granted privileges on Realms, Classes and Objects, and in turn grant those privileges to all users which are members of the role.

    A role named “everyone” is automatically created in new Realms, and all new users which connect to the Realm are automatically added to it. Any other roles you wish to use are managed as normal Realm objects.

    See more

    Declaration

    Swift

    @objc(RealmSwiftPermissionRole)
    public class PermissionRole : Object
  • A representation of a sync user within the permissions system.

    PermissionUser objects are created automatically for each sync user which connects to a Realm, and can also be created manually if you wish to grant permissions to a user which has not yet connected to this Realm. When creating a PermissionUser manually, you must also manually add it to the “everyone” Role.

    See more

    Declaration

    Swift

    @objc(RealmSwiftPermissionUser)
    public class PermissionUser : Object
  • A singleton object which describes Realm-wide permissions.

    An object of this type is automatically created in the Realm for you, and more objects cannot be created manually.

    See RealmPrivileges for the meaning of permissions applied to a Realm.

    See more

    Declaration

    Swift

    @objc(RealmSwiftRealmPermission)
    public class RealmPermission : Object
  • An object which describes class-wide permissions.

    An instance of this object is automatically created in the Realm for class in your schema, and should not be created manually.

    See more

    Declaration

    Swift

    @objc(RealmSwiftClassPermission)
    public class ClassPermission : Object