プロトコル
次のプロトコルはグローバルに利用できます。
-
RRMArray、RMSet、および RMResults のイテレータのサポートを定義するプロトコル。
詳細はこちら宣言
Swift
public protocol _RLMCollectionIterator : Sequence
-
RVMDictionary のイテレータのサポートを定義するプロトコル
宣言
Swift
public protocol _RLMDictionaryIterator
-
同期された Realm のパーティション値として使用できるタイプをマークするタグ プロトコル。
宣言
Swift
public protocol PartitionValue : Sendable
-
BSON 値を表すプロトコル。
次も参照してください
bsonspec.org宣言
Swift
public protocol BSON : PartitionValue, Equatable
-
Realm オブジェクトのデフォルトの ID を定義するプロトコル
オブジェクト サブクラスをこのプロトコルに準拠していると宣言すると、Realm オブジェクトで動作する
Identifiable
のid
のデフォルトの実装が提供されます。// 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
-
宣言
Swift
public protocol RealmCollection : RealmCollectionBase, Equatable where Self.Iterator == RLMIterator<Self.Element>
-
宣言
Swift
public protocol RealmKeyedCollection : ThreadConfined, CustomStringConvertible, Sequence
-
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
-
宣言
Swift
public protocol ProjectionObservable : AnyObject, ThreadConfined
-
すべての数値型のタグ プロトコル。
宣言
Swift
public protocol _QueryNumeric : _RealmSchemaDiscoverable
-
String
と互換性のあるすべてのタイプのタグ プロトコル。宣言
Swift
public protocol _QueryString : _QueryBinary
-
Binary
と互換性のあるすべてのタイプのタグ プロトコル。宣言
Swift
public protocol _QueryBinary
-
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
-
最小値 API と最大値 API で使用できるプロパティのタイプ。
詳細は、次を参照してください:
min(ofProperty:)
,max(ofProperty:)
宣言
Swift
@_marker public protocol MinMaxType
-
合計値および平均値 APIで使用できるプロパティのタイプ。
詳細は、次を参照してください:
sum(ofProperty:)
,average(ofProperty:)
宣言
Swift
@_marker public protocol AddableType
-
直接ソートまたは個別に使用できるプロパティのタイプ。
詳細は、次を参照してください:
sum(ascending:)
,distinct()
宣言
Swift
@_marker public protocol SortableType
-
ソートまたは区別できるプロパティを持つ型。
宣言
Swift
@_marker public protocol KeypathSortable
-
詳細はこちらRealmSectionedResult
は、SectionedResults
とResultSection
に共通のプロパティとメソッドを定義します。宣言
Swift
public protocol RealmSectionedResult : ThreadConfined, Equatable, RandomAccessCollection
-
@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