構造体
次の構造はグローバルに使用できます。
-
この構造体により、Swift の RM オブジェクトのシーケンス スタイルの列挙が可能になります。
詳細はこちらRLMCollection.makeIterator
宣言
Swift
public struct RLMCollectionIterator : IteratorProtocol
-
この構造体により、Swift で RVMDictionary のシーケンス スタイルの列挙が可能になります。
詳細はこちらRLMDictionary.makeIterator
宣言
Swift
public struct RLMDictionaryIterator : IteratorProtocol
-
Realm
インスタンス(Realm とも呼ばれる)は、Realm データベースを表します。Realm はディスク上(
init(path:)
を参照)またはメモリ(Configuration
を参照)に保存できます。Realm
インスタンスは内部的にキャッシュされ、同等のRealm
オブジェクト(たとえば、同じパスまたは識別子を使用)では限定的なオーバーヘッドが発生します。Realm
インスタンスが確実に破棄されるようにしたい場合(たとえば、Realm を開き、いくつかのプロパティを確認した後、Realm ファイルを削除して再度開きたい場合)は、Realm を使用するコードを配置しますautoreleasepool {}
内で、それへの他の強力な参照がないことを確認します。警告
停止していないRLMRealm
インスタンスはスレッドされており、スレッドやディスパッチ キューとの間で共有することはできません。 そのような操作を試みると例外がスローされます。 Realm を操作するスレッドまたはキューごとにRLMRealm
のインスタンスを取得する必要があります。 Realm は、RLMRealm
インスタンスを取得するときにキューを明示的に渡すことで、開かれるスレッドではなくディスパッチ キューに制限できます。 これが行われていない場合、キューは必ずしも同じスレッドで実行されるわけではないため、同じインスタンスを同じキューに複数のブロック ディスパッチで使用しようとすると失敗する可能性があります。宣言
Swift
@frozen public struct Realm
extension Realm: Equatable
-
LinkingObjects
は、自動更新コンテナ タイプです。 プロパティ関係を通じて独自のモデル オブジェクトにリンクされた 0 個以上のオブジェクトを表します。LinkingObjects
は、List<Element>
およびResults<Element>
と同じ述語でクエリできます。LinkingObjects
は、現在のスレッドでの書込みトランザクション中など、現在のスレッド上の Realm の現在の状態を常に反映します。 これに対する唯一の例外は、for...in
列挙型を使用している場合です。これは、列挙中にターゲット オブジェクトにリンクされなくなるように削除または変更された場合でも、列挙の開始時に存在していたリンク オブジェクトを常に列挙します。 。
詳細はこちらLinkingObjects
は、Object
モデルでプロパティとしてのみ使用できます。宣言
Swift
@frozen public struct LinkingObjects<Element> : RealmCollectionImpl where Element : RLMObjectBase, Element : RealmCollectionValue
extension LinkingObjects: RealmSubscribable
extension LinkingObjects: LinkingObjectsProtocol
-
Results
は、オブジェクト クエリから返される Realm の自動更新コンテナ タイプです。Results
はList<Element>
と同じ述語でクエリできます。また、クエリを連鎖させてクエリ結果をさらにフィルタリングできます。Results
は、現在のスレッドでの書込みトランザクション中など、現在のスレッド上の Realm の現在の状態を常に反映します。 これに対する 1 つの例外は、for...in
列挙を使用する場合です。この列では、列挙が開始されると、列挙中にフィルターによって除外されるようにオブジェクトが削除または変更された場合でも、クエリに一致したオブジェクトが常に列挙されます。Results
は、最初にアクセスされたときに遅延評価されるため、クエリの結果が要求された場合にのみクエリを実行します。 つまり、データのソートやフィルタリングのために一時的なResults
を複数連鎖させても、中間状態を処理する不要な作業は実行されません。結果が評価されるか、通知ブロックが追加されると、結果は早期に最新状態に維持され、可能な場合は常にバックグラウンド スレッドで最新の状態を維持するための作業が実行されます。
結果インスタンスは、直接インスタンス化することはできません。
詳細はこちら宣言
Swift
@frozen public struct Results<Element> : Equatable, RealmCollectionImpl where Element : RealmCollectionValue
extension Results: RealmSubscribable
extension Results: Encodable where Element: Encodable
-
詳細はこちらSectionedResults
は、個々のResultsSection
を要素として保持する型セーフなコレクションです。 コンテナは遅延評価されます。つまり、基礎のコレクションが変更された場合は、セクション キーの完全な再計算が行われます。SectionedResults
インスタンスを確認でき、ThreadConfined
にも準拠しています。宣言
Swift
public struct SectionedResults<Key, SectionElement> : SectionedResultImpl where Key : _Persistable, Key : Hashable, SectionElement : RealmCollectionValue
extension SectionedResults: RealmSubscribable
-
詳細はこちらResultsSection
は、特定のセクション キーに属するオブジェクトへのアクセスを許可するコレクションです。 コレクションは遅延評価されます。つまり、基礎のコレクションが変更された場合は、セクション キーの完全な再計算が行われます。ResultsSection
インスタンスを確認でき、ThreadConfined
にも準拠しています。宣言
Swift
public struct ResultsSection<Key, T> : SectionedResultImpl where Key : _Persistable, Key : Hashable, T : RealmCollectionValue
extension ResultsSection: RealmSubscribable
extension ResultsSection: Identifiable
-
型が消去された
RealmCollection
。
詳細はこちらRealmCollection
のインスタンスは、同じElement
タイプを持つ不変の基礎コレクションに操作を転送します。 このタイプは、複数のタイプの Realm コレクションを操作または保存できる非ジェネリック コードを記述するために使用できます。 元のコレクションを直接使用する場合の実行時間オーバーヘッドはありません。宣言
Swift
@frozen public struct AnyRealmCollection<Element> : RealmCollectionImpl where Element : RealmCollectionValue
extension AnyRealmCollection: RealmSubscribable
extension AnyRealmCollection: Encodable where Element: Encodable
-
ProjectedCollection は、プロジェクションのプロパティの特殊なタイプのコレクションであり、Realm オブジェクトの
List
を値のリストにプロジェクションする場合に使用します。 このタイプを手動でインスタンス化する必要はありません。 これを使用するには、List
プロパティでprojectTo
を呼び出します。
詳細はこちらclass PersistedListObject: Object { @Persisted public var people: List<CommonPerson> } class ListProjection: Projection<PersistedListObject> { @Projected(\PersistedListObject.people.projectTo.firstName) var strings: ProjectedCollection<String> }
宣言
Swift
public struct ProjectedCollection<Element> : RandomAccessCollection, CustomStringConvertible, ThreadConfined where Element : RealmCollectionValue
-
CollectionElementMapper
は、実際のコレクション オブジェクトをProjectedCollection
に変換します。以下に例を挙げます。
class Person: Object { @Persisted var dogs: List<Dog> } class PersonProjection: Projection<Person> { @Projected(\Person.dogs.projectTo.name) var dogNames: ProjectedCollection<String> }
このコードでは、
Person
の犬のリストがprojectTo
経由で犬の名前のリストに優先されます。宣言
Swift
@dynamicMemberLookup public struct CollectionElementMapper<Element> where Element : RLMObjectBase, Element : RealmCollectionValue
-
Schema
インスタンスは、Realm によって管理されるモデル オブジェクト スキーマのコレクションを表します。Realm を使用する場合、
Schema
インスタンスでは移行を実行し、データベースのスキーマを内部検証できます。スキーマは、コア データベース内のテーブルのコレクションにマッピングされます。
詳細はこちら宣言
Swift
@frozen public struct Schema : CustomStringConvertible
extension Schema: Equatable
-
詳細はこちらSectionedResults
インスタンスのイテレータ。宣言
Swift
@frozen public struct SectionedResultsIterator<Key, Element> : IteratorProtocol where Key : _Persistable, Key : Hashable, Element : RealmCollectionValue
-
詳細はこちらSection
インスタンスのイテレータ。宣言
Swift
@frozen public struct SectionIterator<Element> : IteratorProtocol where Element : RealmCollectionValue
-
詳細はこちらSortDescriptor
は、sorted(sortDescriptors:)
で使用するキーパスとソート順序を保存します。 これはNSSortDescriptor
と似ていますが、Realm のクエリ エンジンによって効率的に実行できる機能のサブセットのみをサポートします。宣言
Swift
@frozen public struct SortDescriptor
extension SortDescriptor: CustomStringConvertible
extension SortDescriptor: Equatable
extension SortDescriptor: ExpressibleByStringLiteral
-
Realm 通知をラップするサブスクライブ。
詳細はこちら宣言
Swift
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) @frozen public struct ObservationSubscription : Subscription
-
Realm AsyncOpenTask をラップするサブスクライブ。
詳細はこちら宣言
Swift
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) @frozen public struct AsyncOpenSubscription : Subscription
-
Realm イベント記録は、Realm で実行されたすべての読み取りと書込みを記録し、サーバーに報告するために使用できます。 Realm を開くために使用される
詳細はこちらRealm.Configuration
のeventConfiguration
プロパティを設定してイベント レコードを有効にし、Realm
でevents
プロパティを持つEvents
インスタンスを取得します。宣言
Swift
public struct Events
-
Realm イベント記録の構成パラメーター。
Realm イベント記録を有効にするには、
Realm.Configuration.eventConfiguration
を nil 以外のEventConfiguration
に設定します。 デフォルトの初期化構成は有効ですが、一部のプロパティをカスタマイズする必要がある場合があります。Realm イベント記録を使用するには、イベントを書き込むアプリのサーバーに定義されたスキーマにコレクション
AuditEvent
を含める必要があります。 スキーマには、次のフィールドが含まれている必要があります。_id
:ObjectId
activity
:String
event
:String?
data
:String?
timestamp
:Date
さらに、使用されるメタデータ キーごとにString?
フィールドが必要です。
宣言
Swift
@frozen public struct EventConfiguration : Sendable
-
マップ内の要素のオフセットを保持するコンテナ タイプ。
詳細はこちら宣言
Swift
public struct MapIndex
-
マップ内に単一のキーと値のエントリを保持するためのコンテナ。 これは、チュートリアルをジェネリック引数として表現できない場合に使用されます。
詳細はこちら宣言
Swift
public struct SingleMapEntry<Key, Value> : _RealmMapValue, Hashable where Key : _MapKey, Value : RealmCollectionValue
-
宣言
Swift
@frozen public struct PropertyChange
-
このクラスは、Realm モデル オブジェクト スキーマを表します。
Realm を使用する場合、
ObjectSchema
インスタンスでは移行を実行し、データベースのスキーマを内部検証できます。オブジェクト スキーマは、コア データベース内のテーブルにマップされます。
詳細はこちら宣言
Swift
@frozen public struct ObjectSchema : CustomStringConvertible
extension ObjectSchema: Equatable
-
@Persisted は、Realm によって管理される必要があるオブジェクト サブクラスのプロパティを宣言するために使用されます。
使用例:
class MyModel: Object { // A basic property declaration. A property with no // default value supplied will default to `nil` for // Optional types, zero for numeric types, false for Bool, // an empty string/data, and a new random value for UUID // and ObjectID. @Persisted var basicIntProperty: Int // Custom default values can be specified with the // standard Swift syntax @Persisted var intWithCustomDefault: Int = 5 // Properties can be indexed by passing `indexed: true` // to the initializer. @Persisted(indexed: true) var indexedString: String // Properties can set as the class's primary key by // passing `primaryKey: true` to the initializer @Persisted(primaryKey: true) var _id: ObjectId // List and set properties should always be declared // with `: List` rather than `= List()` @Persisted var listProperty: List<Int> @Persisted var setProperty: MutableSet<MyObject> // LinkingObjects properties require setting the source // object link property name in the initializer @Persisted(originProperty: "outgoingLink") var incomingLinks: LinkingObjects<OtherModel> // Properties which are not marked with @Persisted will // be ignored entirely by Realm. var ignoredProperty = true }
Int、ブール、string、ObjectId、Date プロパティは、初期化子に
indexed: true
を渡すことでインデックス化できます。 プロパティをインデックス化すると、そのプロパティに対する等価クエリのパフォーマンスが向上しますが、書込みパフォーマンスは若干低下します。 現在、インデックスを使用している他の操作はありません。初期化子に
primaryKey: true
を渡すことで、プロパティをクラスのプライマリキーとして設定できます。 複合プライマリキーはサポートされていません。プライマリキーとして複数のプロパティを設定すると、実行時に例外がスローされます。 Int、 string 、UUID、およびObjectIdプロパティのみをプライマリキーにすることができます。Atlas Atlas App Servicesを使用する場合は、プライマリキーの名前を_id
にする必要があります。 プライマリキー プロパティは、管理されていないオブジェクトでのみミューテーションでき、Realm に追加されたオブジェクトでそれを変更すると例外がスローされます。オプションで、標準の Swift 構文を使用してプロパティにデフォルト値を設定できます。 デフォルト値が指定されていない場合、最初のアクセス時に値が生成されます。すべてのオプション型は
nil
、数値型はゼロ、ブール値は false、空のstring /data、 UUID とObjectIdの新しいランダム値。 List プロパティと MutableSet プロパティは、空の List/MutableSet のデフォルト値に設定して定義しないでください。 同様に操作を実行すると機能しますが、Realm によって管理されているオブジェクトにアクセスする際のパフォーマンスは低下します。 同様に、 ObjectIdプロパティはObjectID.generate()
に初期化されないでください。そうすると、 Realmからの読み取り時に、余計な ObjectID が生成され、その後破棄されるためです。クラスに少なくとも 1 つの @Persisted プロパティがある場合、Realm は他のすべてのプロパティを無視します。 つまり、これらは永続化されず、クエリやその他の操作(ソートや集計など)管理されたプロパティを必要とする操作では使用されません。
@Persisted は、 Object または 埋め込み Object サブクラスのプロパティとして以外の場所で使用することはできず、他の場所で使用しようとするとランタイムエラーが発生します。
詳細はこちら宣言
Swift
@propertyWrapper public struct Persisted<Value> where Value : _Persistable
extension Persisted: Decodable where Value: Decodable
extension Persisted: Encodable where Value: Encodable
extension Persisted: OptionalCodingWrapper where Value: ExpressibleByNilLiteral
-
@Projected
は、Realm によって管理される必要があるProjection
プロトコルのプロパティを宣言するために使用されます。使用例:
詳細はこちらpublic class Person: Object { @Persisted var firstName = "" @Persisted var lastName = "" @Persisted var address: Address? @Persisted var friends: List<Person> @Persisted var reviews: List<String> } class PersonProjection: Projection<Person> { @Projected(\Person.firstName) var firstName @Projected(\Person.lastName.localizedUppercase) var lastNameCaps @Projected(\Person.address.city) var homeCity @Projected(\Person.friends.projectTo.firstName) var firstFriendsName: ProjectedCollection<String> } let people: Results<PersonProjection> = realm.objects(PersonProjection.self)
宣言
Swift
@propertyWrapper public struct Projected<T, Value> : AnyProjected where T : RLMObjectBase
-
宣言
Swift
@frozen public struct ProjectedPropertyChange
-
Property
インスタンスは、オブジェクト スキーマのコンテキストで Realm によって管理されるプロパティを表します。 このようなプロパティは、Realm ファイルに永続化することも、Realm 内の他のデータから計算することもできます。Realm を使用する場合、プロパティ インスタンスによって移行を実行し、データベースのスキーマを内部検証できます。
プロパティ インスタンスは、コア データベースの列にマップされます。
詳細はこちら宣言
Swift
@frozen public struct Property : CustomStringConvertible
extension Property: Equatable
-
詳細はこちらString
クエリのオプションを表す列挙型。宣言
Swift
public struct StringOptions : OptionSet, Sendable
-
Query
は、型安全性のあるクエリ述語を作成するために使用されるクラスです。Query
を使用すると、NSPredicate
に構築される Swift スタイルのクエリ式を作成する機能が付与されます。Query
クラスは直接インスタンス化されず、クエリ式を引数として受け取る閉じる内のパラメーターとしてのみ使用してください。 例:public func where(_ query: ((Query<Element>) -> Query<Element>)) -> Results<Element>
次に、上記の関数を次のように使用します。
let results = realm.objects(Person.self).query { $0.name == "Foo" || $0.name == "Bar" && $0.age >= 21 }
サポートされている述語の型
Prefix
- ではない
!
swift let results = realm.objects(Person.self).query { !$0.dogsName.contains("Fido") || !$0.name.contains("Foo") }
比較
- equals
==
- 等しくない
!=
- 大なり
>
- 未満
<
- 以上
>=
- 以下
<=
- 間
.contains(_ range:)
コレクション
- で
.contains(_ element:)
- 間
.contains(_ range:)
Map
- @allKeys
.keys
- @allValues
.values
複合
- および
&&
- または
||
コレクションの集計
- @avg
.avg
- @min
.min
- @max
.max
- @sum
.sum
- @count
.count
swift let results = realm.objects(Person.self).query { !$0.dogs.age.avg >= 0 || !$0.dogsAgesArray.avg >= 0 }
その他
- ではない
!
- サブクエリ
($0.fooList.intCol >= 5).count > n
宣言
Swift
@dynamicMemberLookup public struct Query<T>
- ではない
-
詳細はこちらRealmCollection
インスタンスのイテレータ。宣言
Swift
@frozen public struct RLMIterator<Element> : IteratorProtocol where Element : RealmCollectionValue
-
詳細はこちらRealmKeyedCollection
インスタンスのイテレータ。宣言
Swift
@frozen public struct RLMMapIterator<Element> : IteratorProtocol where Element : _RealmMapValue
-
マップ内の各エントリに対して
詳細はこちら(key: Key, value: Value)
ペアを生成するMap<Key, Value>
のイテレータ。宣言
Swift
@frozen public struct RLMKeyValueIterator<Key, Value> : IteratorProtocol where Key : _MapKey, Value : RealmCollectionValue
-
観察可能なオブジェクトをインスタンス化するプロパティ ラッパー型。
プロパティ宣言に
SwiftUI/View
SwiftUI/App
SwiftUI/Scene
@StateRealmObject
属性を適用し、 doc: /Combin/ObservableObjectプロトコル:@StateRealmObject var model = DataModel()
SwiftUI では、オブジェクトを宣言する構造体の各インスタンスに対して 1 回だけオブジェクトの新しいインスタンスが作成されます。 観察可能な Realm オブジェクトの公開プロパティが変更されると、SwiftUI はそれらのプロパティに依存するビューの部分を更新します。 管理されていない場合、プロパティはオブジェクト自体から読み取られます。それ以外の場合は、基礎となる Realm から読み取られます。 値を変更すると、ビューは非同期に更新されます。
Text(model.title) // Updates the view any time `title` changes.
状態オブジェクトは、
SwiftUI/ObservedRealmObject
属性を持つプロパティに渡すことができます。$
演算子を使用して、状態オブジェクトのプロパティの 1 つにSwiftUI/Binding
を取得します。 オブジェクトのプロパティの 1 つへの双方向接続を作成する場合は、バインディングを使用します。 たとえば、SwiftUI/Toggle
がモデルに保存されているisEnabled
というブール値を制御できるようにできます。Toggle("Enabled", isOn: $model.isEnabled)
これにより、変更された
詳細はこちらisEnabled
プロパティがmodel
オブジェクトの Realm に書込まれます。宣言
Swift
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) @MainActor @propertyWrapper public struct StateRealmObject<T> : DynamicProperty where T : RealmSubscribable, T : ThreadConfined, T : Equatable
-
Realm に対するクエリの結果を表すプロパティ ラッパー タイプ。
結果では、環境値
realmConfiguration
によって提供される Realm 構成が使用されます。SwiftUI 以外の結果コレクションとは異なり、OservedResults は可変です。 ObservedResults コレクションへの書込み(write)は、暗黙的に書込みトランザクションを実行します。 関連付けられたクエリがフィルタリングして除外するオブジェクトを ObservedResults に追加すると、オブジェクトは Realm に追加されますが、OservedResults には含まれません。
SwiftUI で
詳細はこちら@ObservedResults var v
の場合、$v
はBoundCollection
を参照します。宣言
Swift
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) @propertyWrapper @MainActor public struct ObservedResults<ResultType> : DynamicProperty, BoundCollection where ResultType : KeypathSortable, ResultType : RealmFetchable, ResultType : _ObservedResultsValue, ResultType : Identifiable
-
セクション化された結果コレクションを表すプロパティ ラッパー タイプ。
セクションされた結果では、初期化プロセスで
configuration
が設定されていない場合、環境値realmConfiguration
によって提供される Realm 構成が使用されます。SwiftUI で
詳細はこちら@ObservedSectionedResults var v
の場合、$v
はBoundCollection
を参照します。宣言
Swift
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) @propertyWrapper @MainActor public struct ObservedSectionedResults<Key, ResultType> : DynamicProperty, BoundCollection where Key : _Persistable, Key : Hashable, ResultType : KeypathSortable, ResultType : RealmFetchable, ResultType : _ObservedResultsValue, ResultType : Identifiable
-
宣言
Swift
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) @MainActor @propertyWrapper public struct ObservedRealmObject<ObjectType>: DynamicProperty where ObjectType: RealmSubscribable & ThreadConfined & ObservableObject & Equatable
-
Realm を非同期に開く現在のユーザーに対して
Realm.asyncOpen()
を開始し、指定されたプロセスの状態を通知するプロパティ ラッパー型ユーザーがすでにログインしている後、またはユーザーがログインする場合は、
SwiftUI/View
またはSwiftUI/App
に AsyncOpen を追加します@AsyncOpen(appId: "app_id", partitionValue: <partition_value>) var asyncOpen
これにより、
Realm.asyncOpen()
操作がすぐに開始され、Realm を使用可能な状態にするために必要なすべての作業が実行されます。 ( Realm.asyncOpen() のドキュメントを参照してください)このプロパティ ラッパーは、進行状況、エラー、開かれたRealmなど、現在の
Realm.asyncOpen()
プロセスの状態を公開します。これはビューの更新に使用できますstruct AsyncOpenView: View { @AsyncOpen(appId: "app_id", partitionValue: <partition_value>) var asyncOpen var body: some View { switch asyncOpen { case .notOpen: ProgressView() case .open(let realm): ListView() .environment(\.realm, realm) case .error(_): ErrorView() case .progress(let progress): ProgressView(progress) } } }
この開かれた
realm
は、後で環境値としてビューに入力され、プロパティ ラッパーによって使用され、開かれた Realm のデータをビューに入力します。
詳細はこちらListView() .environment(\.realm, realm)
宣言
Swift
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) @MainActor @propertyWrapper public struct AsyncOpen : DynamicProperty
-
AutoOpen
は、Realm を非同期に開くために 1 回試行しますが、インターネット接続がない場合は、ビュー内で使用できる appId と partitionValue の開かれた Realm が返されます。 ユーザーがすでにログインしている後、またはユーザーがログインする場合は、SwiftUI/View
またはSwiftUI/App
に AutoOpen を追加します@AutoOpen(appId: "app_id", partitionValue: <partition_value>, timeout: 4000) var autoOpen
これにより、
Realm.asyncOpen()
操作がすぐに開始され、Realm を使用可能な状態にするために必要なすべての作業が実行されます。 ( Realm.asyncOpen() のドキュメントを参照してください)このプロパティ ラッパーは、進行状況、エラー、開かれたRealmなど、現在の
Realm.asyncOpen()
プロセスの状態を公開します。これはビューの更新に使用できますstruct AutoOpenView: View { @AutoOpen(appId: "app_id", partitionValue: <partition_value>) var autoOpen var body: some View { switch autoOpen { case .notOpen: ProgressView() case .open(let realm): ListView() .environment(\.realm, realm) case .error(_): ErrorView() case .progress(let progress): ProgressView(progress) } } }
この開かれた
realm
は、後で環境値としてビューに入力され、プロパティ ラッパーによって使用され、開かれた Realm のデータをビューに入力します。ListView() .environment(\.realm, realm)
このプロパティ ラッパーは
詳細はこちらAsyncOpen
と同様に動作し、宣言と使用の点では完全に同じですが、オフラインからのアプローチの違いがあります。宣言
Swift
@available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) @MainActor @propertyWrapper public struct AutoOpen : DynamicProperty
-
詳細はこちらSyncConfiguration
は、Atlas App Services と同期するための Realm の構成パラメータを表します。宣言
Swift
@frozen public struct SyncConfiguration : Sendable
-
指定された名前と引数を持つ Atlas App Services 関数を呼び出すためのインターフェースを提供する構造体。
user.functions.sum([1, 2, 3, 4, 5]) { sum, error in guard case let .int64(value) = sum else { print(error?.localizedDescription) } assert(value == 15) }
動的ノード名(上記の例では
詳細はこちらsum
)は、関数名に直接関連付けられています。 最初の引数は、関数に提供する引数のBSONArray
です。 2 番目の最後の引数は、関数呼び出しが完了したときに呼び出される完了ハンドラーです。 このハンドラーは非メインのグローバルDispatchQueue
で実行されます。宣言
Swift
@dynamicMemberLookup @frozen public struct Functions : Sendable
-
ユーザー関数に対して次の構文保存を可能にする構造。
guard case let .int32(sum) = try await user.functions.sum([1, 2, 3, 4, 5]) else { return }
動的ノード名(上記の例では
詳細はこちらsum
)は、関数名に直接関連付けられた@dynamicMemberLookup
によって提供されます。宣言
Swift
@dynamicCallable public struct FunctionCallable : Sendable
-
詳細はこちらSyncSubscription
は、サブスクリプションセットのクエリから取得された Flexible Sync サブスクリプションを定義するために使用され、コミットされたサブスクライブの読み取りまたは削除/更新に使用できます。宣言
Swift
@frozen public struct SyncSubscription
-
詳細はこちらSubscriptionQuery
は 、書込みサブスクリプション トランザクション 内で追加または削除、または更新できる、名前付き/名前のないクエリ サブスクリプション クエリを定義するために使用されます。宣言
Swift
@frozen public struct QuerySubscription<T> where T : RealmSwiftObject
-
詳細はこちらSyncSubscriptionSet
はSyncSubscription
のコレクションです。 これは、SyncSubscription
を追加および削除するためのエントリ ポイントです。宣言
Swift
@frozen public struct SyncSubscriptionSet
extension SyncSubscriptionSet: Sequence
-
この構造体により、
詳細はこちらSyncSubscriptionSet
のシーケンス スタイルの列挙が有効になります。宣言
Swift
@frozen public struct SyncSubscriptionSetIterator : IteratorProtocol
-
スレッド間で渡されることを意図したオブジェクトで、スレッド定義されたオブジェクトへのスレッドセーフな参照を含みます。
別のスレッド上のターゲット Realm のスレッドセーフな参照を解決するには、
Realm.resolve(_:)
にを渡します。警告
ThreadSafeReference
オブジェクトは最大 1 回で解決される必要があります。ThreadSafeReference
を解決しないと、参照が再割り当てされるまで、Realm のソース バージョンが固定されます。注意
すべての参照が解決または割り当てが完了するまで、ソース Realm のバージョンのデータが保持されるため、有効期間の短い
ThreadSafeReference
を優先します。詳細は、次を参照してください:
詳細は、次を参照してください:
宣言
Swift
@frozen public struct ThreadSafeReference<Confined> where Confined : ThreadConfined
extension ThreadSafeReference: Sendable