プロトコル

次のプロトコルはグローバルに利用できます。

識別可能

  • Realm オブジェクトのデフォルトの ID を定義するプロトコル

    オブジェクト サブクラスをこのプロトコルに準拠していると宣言すると、Realm オブジェクトで動作するIdentifiableidのデフォルトの実装が提供されます。

    // Automatically conforms to `Identifiable`
    class MyObjectType: Object, ObjectKeyIdentifiable {
        // ...
    }
    

    必要に応じて、手動でIdentifiableに準拠することもできますが、オブジェクトのメモリ アドレスの使用は管理対象オブジェクトでは機能しないことに注意してください。

    詳細はこちら

    宣言

    Swift

    @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
    public protocol ObjectKeyIdentifiable : Identifiable

組み合わせ

  • valuePublisher()またはchangesetPublisher()に渡すことができる型。

    宣言

    Swift

    @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
    public protocol RealmSubscribable

RealmCollection プロトコル

パブリック API

  • Realm がサポートするタイプにマッピングしたり、タイプからマップしたりできるタイプ。

    Realm がネイティブにサポートしていない Realm に型を保存するには、型を CustomPersistable または FailablecustomPersistable のいずれかに準拠しているものとして宣言します。これには、このタイプがマッピングされる Realm タイプ、 PersistedTypeを取得する初期化子、適切なPersistedTypeを返すプロパティを示すPersistedTypeという名前の関連タイプを定義する必要があります。 たとえば、 URLを永続的にするには、次の操作を実行します。

    // Not all strings are valid URLs, so this uses
    // FailableCustomPersistable to handle the case when the data
    // in the Realm isn't a valid URL.
    extension URL: FailableCustomPersistable {
        typealias PersistedType = String
        init?(persistedValue: String) {
            self.init(string: persistedValue)
        }
        var persistableValue: PersistedType {
            self.absoluteString
        }
    }
    

    これを行うと、URL を使用してプロパティを定義できます。

    class MyModel: Object {
        @Persisted var url: URL
        @Persisted var mapOfUrls: Map<String, URL>
    }
    

    PersistedType は、Realm でサポートされているプリミティブ タイプまたはEmbeddedObjectサブクラスのいずれかになります。 マップされた型のデータを複数保存する必要がある場合は、 EmbeddedObjectサブクラスを使用できます。 たとえば、 CGPointを保存するには次のようにします。

    // Define the storage object. A type used for custom mappings
    // does not have to be used exclusively for custom mappings,
    // and more than one type can map to a single embedded object
    // type.
    class CGPointObject: EmbeddedObject {
        @Persisted var double: x
        @Persisted var double: y
    }
    
    // Define the mapping. This mapping isn't failable, as the
    // data stored in the Realm can always be interpreted as a
    // CGPoint.
    extension CGPoint: CustomPersistable {
        typealias PersistedType = CGPointObject
        init(persistedValue: CGPointObject) {
            self.init(x: persistedValue.x, y: persistedValue.y)
        }
        var persistableValue: PersistedType {
            CGPointObject(value: [x, y])
        }
    }
    
    class PointModel: Object {
        // Note that types which are mapped to embedded objects do
        // not have to be optional (but can be).
        @Persisted var point: CGPoint
        @Persisted var line: List<CGPoint>
    }
    

    クエリは、カスタム永続可能なタイプではなく、永続的なタイプで実行されます。 クエリに渡される値は、永続化型またはカスタム永続可能型のいずれかになります。 埋め込みオブジェクトにマップされるカスタム永続可能なタイプの場合、 ノードごとの等価性が使用されます。 たとえば、 realm.objects(PointModel.self).where { $0.point == CGPoint(x: 1, y: 2) }"point.x == 1 AND point.y == 2"と同等です。

    詳細はこちら

    宣言

    Swift

    public protocol CustomPersistable : _CustomPersistable
  • Realm がサポートするタイプにマッピングしたり、タイプからマップしたりできるタイプ。

    このプロトコルはCustomPersistableと同じですが、 init(persistedValue:)でなくinit?(persistedValue:)を使用します。

    FailablecustomPerstable 型は、任意以外のコンテキストでは強制的にラップ解除され、任意コンテキストではnilに折りたたまれます。 つまり、URL に変換できない値がある場合、@Persisted var url: URL プロパティを読み取るとラップされていない失敗例外がスローされ、 からの読み取りではPersisted var url: URL? nilが返されます。

    詳細はこちら

    宣言

    Swift

    public protocol FailableCustomPersistable : _CustomPersistable
  • Realm イベントのカスタム表現を持つタイプ。

    デフォルトでは、すべてのプロパティを含む組み込みルールを使用してオブジェクトは JSON に直列化されます。 イベントでクラスが直列化される方法をカスタマイズする場合は、このプロトコルに準拠しているものとして宣言し、 customEventRepresentation()を定義します。

    詳細はこちら

    宣言

    Swift

    @objc(RLMCustomEventRepresentable)
    public protocol CustomEventRepresentable
  • MongoCollection.watch()ストリームの変更をサブスクライブするために使用される削除。

    詳細はこちら

    宣言

    Swift

    public protocol ChangeEventDelegate : AnyObject
  • Realm オブジェクトに保存できる列挙型。

    Int にバックアップされる@objc列挙型のみが Realm オブジェクトに保存でき、列挙型はこのプロトコルに明示的に準拠する必要があります。 例:

    @objc enum MyEnum: Int, RealmEnum {
       case first = 1
       case second = 2
       case third = 7
    }
    
    class MyModel: Object {
       @objc dynamic enumProperty = MyEnum.first
       let optionalEnumProperty = RealmOptional<MyEnum>()
    }
    

    宣言

    Swift

    public protocol RealmEnum : RealmOptionalType, _RealmSchemaDiscoverable
  • RealmOptionalをパラメータ化できる型を説明するプロトコル。

    宣言

    Swift

    public protocol RealmOptionalType : _ObjcBridgeable
  • @Persted および Realm コレクションで使用できる列挙型。

    Realm で列挙を永続化するには、未加工の値と、Realm が保存できるタイプの未加工値が必要です。 Swift では暗黙的にマークされることはできないため、列挙型もこのプロトコルに準拠しているものとして明示的にマークする必要があります。

    enum IntEnum: Int, PersistableEnum {
       case first = 1
       case second = 2
       case third = 7
    }
    enum StringEnum: String, PersistableEnum {
       case first = "a"
       case second = "b"
       case third = "g"
    }
    

    Realm に列挙型の有効なメンバーではない値が含まれている場合(有効な値が異なる別の同期クライアントによって書き込まれた場合など)、任意の列挙プロパティはnilを返し、任意以外のプロパティはは、プロセスを中止します。

    宣言

    Swift

    public protocol PersistableEnum : MinMaxType, RealmEnum, _PersistableInsideOptional, _RealmCollectionValueInsideOptional, CaseIterable, Comparable, RawRepresentable where Self.RawValue : Comparable
  • インデックスを作成できる型。

    このプロトコルは タグに相当し、これに準拠する追加の型を宣言すると、コンパイル時エラーではなく、ランタイム エラーが発生します。

    宣言

    Swift

    @_marker
    public protocol _Indexable
  • オブジェクトのプライマリキーにすることができる型。

    このプロトコルは タグに相当し、これに準拠する追加の型を宣言すると、コンパイル時エラーではなく、ランタイム エラーが発生します。

    宣言

    Swift

    @_marker
    public protocol _PrimaryKey

ProjectionObservable

キーパス コレクションの集計

notifications

  • Realm から取得可能なオブジェクト - オブジェクトまたはプロジェクション

    宣言

    Swift

    public protocol RealmFetchable : RealmCollectionValue
  • Realm リスト、MutableSet、マップ、または結果に保存できるタイプ。

    このプロトコルに準拠するように追加のタイプを宣言しても、実際には機能しません。 Realm に値を保存する方法のロジックのほとんどは Swift に実装されておらず、現在、より多くのタイプをサポートするための拡張メカニズムはありません。

    宣言

    Swift

    public protocol RealmCollectionValue : _HasPersistedType, Hashable where Self.PersistedType : RealmCollectionValue
  • RealmPropertyTypeをパラメータ化できる型を説明するプロトコル。

    宣言

    Swift

    public protocol RealmPropertyType : _ObjcBridgeable, _RealmSchemaDiscoverable

MinMaxType

  • 最小値 API と最大値 API で使用できるプロパティのタイプ。

    詳細は、次を参照してください:

    min(ofProperty:), max(ofProperty:)

    宣言

    Swift

    @_marker
    public protocol MinMaxType

AddableType

  • 合計値および平均値 APIで使用できるプロパティのタイプ。

    詳細は、次を参照してください:

    sum(ofProperty:), average(ofProperty:)

    宣言

    Swift

    @_marker
    public protocol AddableType
  • 直接ソートまたは個別に使用できるプロパティのタイプ。

    詳細は、次を参照してください:

    sum(ascending:), distinct()

    宣言

    Swift

    @_marker
    public protocol SortableType
  • ソートまたは区別できるプロパティを持つ型。

    宣言

    Swift

    @_marker
    public protocol KeypathSortable
  • RealmSectionedResult は、 SectionedResultsResultSectionに共通のプロパティとメソッドを定義します。

    詳細はこちら

    宣言

    Swift

    public protocol RealmSectionedResult : ThreadConfined, Equatable, RandomAccessCollection

ObservedResults

  • @ObservedResults プロパティ ラッパーで使用できる型。 Realm オブジェクトまたはプロジェクションの子クラス。 ObservedResults の初期化メソッドを特別にするために作成されています。

    宣言

    Swift

    @available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
    public protocol _ObservedResultsValue : RealmCollectionValue
  • ThreadConfinedに準拠する型のオブジェクトは Realm によって管理されるため、スレッド固有のRealmインスタンスに関連付けられます。 管理対象オブジェクトをスレッド間で渡すには、明示的にエクスポートおよびインポートする必要があります。

    このプロトコルに準拠するオブジェクトの管理対象インスタンスは、 ThreadSafeReference(to:)コンストラクターにを渡すことで、スレッド間で転送されるためのスレッドセーフな参照に変換できます。

    Realm によって定義された型のみがこのプロトコルに意味のあるものに準拠することができ、それに準拠しようとする新しいクラスを定義しても、 ThreadSafeReferenceでは動作しないことに注意してください。

    詳細はこちら

    宣言

    Swift

    public protocol ThreadConfined