構造体

次の構造はグローバルに使用できます。

  • この構造体により、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

AddableType

  • Results は、オブジェクト クエリから返される Realm の自動更新コンテナ タイプです。

    ResultsList<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.ConfigurationeventConfigurationプロパティを設定してイベント レコードを有効にし、 Realmeventsプロパティを持つ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

MapIndex

SingleMapEntry

  • マップ内に単一のキーと値のエントリを保持するためのコンテナ。 これは、チュートリアルをジェネリック引数として表現できない場合に使用されます。

    詳細はこちら

    宣言

    Swift

    public struct SingleMapEntry<Key, Value> : _RealmMapValue, Hashable where Key : _MapKey, Value : RealmCollectionValue
  • Object変更通知で変更された特定のプロパティに関する情報。

    詳細はこちら

    宣言

    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

ProjectionObservable

  • Object変更通知で変更された特定のプロパティに関する情報。

    詳細はこちら

    宣言

    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

StateRealmObject

  • 観察可能なオブジェクトをインスタンス化するプロパティ ラッパー型。

    プロパティ宣言にSwiftUI/View SwiftUI/AppSwiftUI/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

ObservedResults

  • Realm に対するクエリの結果を表すプロパティ ラッパー タイプ。

    結果では、環境値realmConfigurationによって提供される Realm 構成が使用されます。

    SwiftUI 以外の結果コレクションとは異なり、OservedResults は可変です。 ObservedResults コレクションへの書込み(write)は、暗黙的に書込みトランザクションを実行します。 関連付けられたクエリがフィルタリングして除外するオブジェクトを ObservedResults に追加すると、オブジェクトは Realm に追加されますが、OservedResults には含まれません。

    SwiftUI で@ObservedResults var vの場合、 $vBoundCollectionを参照します。

    詳細はこちら

    宣言

    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の場合、 $vBoundCollectionを参照します。

    詳細はこちら

    宣言

    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

ObservedRealmObject

  • 監視可能な Realm ObjectまたはListをサブスクライブし、監視可能なオブジェクトが変更されるたびにビューを無効にするプロパティ ラッパー型。

    詳細はこちら

    宣言

    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

AsyncOpen

  • 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

  • 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
  • SyncSubscriptionSetSyncSubscriptionのコレクションです。 これは、 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を優先します。

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

    ThreadConfined

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

    Realm.resolve(_:)

    詳細はこちら

    宣言

    Swift

    @frozen
    public struct ThreadSafeReference<Confined> where Confined : ThreadConfined
    extension ThreadSafeReference: Sendable