RealmCollection

public protocol RealmCollection : RealmCollectionBase, Equatable where Self.Iterator == RLMIterator<Self.Element>

検索、フィルタリング、並べ替え、操作可能なObjectの同義語コレクション。

プロパティ

  • コレクションを管理する Realm、または管理されていないコレクションの場合はnil

    宣言

    Swift

    var realm: Realm? { get }
  • コレクションがアクセスできなくなっているかどうかを示します。

    コレクションを管理するRealminvalidate()が呼び出された場合、コレクションにアクセスできなくなります。

    宣言

    Swift

    var isInvalidated: Bool { get }
  • コレクション内のオブジェクトの数。

    宣言

    Swift

    var count: Int { get }
  • コレクションに含まれるオブジェクトの、人間が判読可能な説明。

    宣言

    Swift

    var description: String { get }

オブジェクト検索

  • コレクション内の最初のオブジェクトを返します。コレクションが空の場合はnilを返します。

    宣言

    Swift

    var first: Element? { get }
  • コレクション内の最後のオブジェクトを返します。コレクションが空の場合はnilを返します。

    宣言

    Swift

    var last: Element? { get }

Index Retrieval

  • コレクション内のオブジェクトのインデックスを返します。オブジェクトが存在しない場合はnilを返します。

    宣言

    Swift

    func index(of object: Element) -> Int?

    パラメーター

    object

    オブジェクト。

  • index(matching:) デフォルトの実装

    述語に一致する最初のオブジェクトのインデックスを返します。一致するオブジェクトがない場合はnilを返します。

    これは、順序付きコレクションにのみ適用され、コレクションが順序付けられていない場合は中止されます。

    デフォルトの実装

    クエリに一致する最初のオブジェクトのインデックスを返します。一致するオブジェクトがない場合はnilを返します。

    これは、順序付きコレクションにのみ適用され、コレクションが順序付けられていない場合は中止されます。

    注意

    これは、 @Persistableプロパティ宣言を使用するクラスでのみ使用する必要があります。

    • 使用法:

      obj.index(matching: { $0.fooCol < 456 })
      

    注意

    利用可能なクエリ操作の詳細については、 Queryを参照してください。

    宣言

    Swift

    func index(matching predicate: NSPredicate) -> Int?

    パラメーター

    predicate

    オブジェクトをフィルタリングするために使用する述語。

  • index(matching:_:) デフォルトの実装

    述語に一致する最初のオブジェクトのインデックスを返します。一致するオブジェクトがない場合はnilを返します。

    これは、順序付きコレクションにのみ適用され、コレクションが順序付けられていない場合は中止されます。

    デフォルトの実装

    指定された述語に一致する最初のオブジェクトのインデックスを返します。一致するオブジェクトがない場合はnilを返します。

    宣言

    Swift

    func index(matching predicateFormat: String, _ args: Any...) -> Int?

    パラメーター

    predicateFormat

    述語形式の string 。オプションで、その後に変数の数の引数が続きます。

オブジェクト検索

  • 指定されたインデックスセットによって指定されたインデックスにあるコレクション内のオブジェクトを含む配列を返します。

    警告

    IndexSet で提供されたインデックスが範囲外の場合、 がスローされます。

    宣言

    Swift

    func objects(at indexes: IndexSet) -> [Element]

    パラメーター

    indexes

    オブジェクトを選択するための コレクション内のインデックス。

フィルタリング

  • filter(_:_:) デフォルトの実装

    コレクション内の指定された述語に一致するすべてのオブジェクトを含むResultsを返します。

    デフォルトの実装

    コレクション内の指定された述語に一致するすべてのオブジェクトを含むResultsを返します。

    宣言

    Swift

    func filter(_ predicateFormat: String, _ args: Any...) -> Results<Element>

    パラメーター

    predicateFormat

    述語形式の string 。オプションで、その後に変数の数の引数が続きます。

  • コレクション内の指定された述語に一致するすべてのオブジェクトを含むResultsを返します。

    宣言

    Swift

    func filter(_ predicate: NSPredicate) -> Results<Element>

    パラメーター

    predicate

    オブジェクトをフィルタリングするために使用する述語。

ソート

  • コレクション内のオブジェクトを含むResultsをソートされた状態で返します。

    警告

    コレクションは、ブール値、DateNSDate、単一および倍精度浮動小数点、整数、およびstring型のプロパティでのみソートできます。

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

    sorted(byKeyPath:ascending:)

    宣言

    Swift

    func sorted<S>(by sortDescriptors: S) -> Results<Element> where S : Sequence, S.Element == SortDescriptor

    パラメーター

    sortDescriptors

    並べ替えるSortDescriptorのシーケンス。

  • 指定されたキー パスに基づいて、個別のオブジェクトを含むResultsを返します。

    宣言

    Swift

    func distinct<S>(by keyPaths: S) -> Results<Element> where S : Sequence, S.Element == String

    パラメーター

    keyPaths

    で個別のキー パス。

集計操作

  • コレクション内のすべてのオブジェクト間で指定されたプロパティの最小(最小)値を返します。コレクションが空の場合はnilを返します。

    警告

    MinMaxTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func min<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType

    パラメーター

    property

    最小値が必要なプロパティの名前。

  • コレクション内のすべてのオブジェクト間で指定されたプロパティの最大値(最高値)を返します。コレクションが空の場合はnilを返します。

    警告

    MinMaxTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func max<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType

    パラメーター

    property

    最小値が必要なプロパティの名前。

  • コレクション内のオブジェクトの指定された プロパティの合計を返します。コレクションが空の場合はnilです。

    警告

    AddableTypeプロトコルに準拠した型のプロパティ名のみを使用できます。

    宣言

    Swift

    func sum<T>(ofProperty property: String) -> T where T : _HasPersistedType, T.PersistedType : AddableType

    パラメーター

    property

    合計を計算するためのAddableTypeに準拠したプロパティの名前。

  • コレクション内のすべてのオブジェクトにわたる指定されたプロパティの平均値を返します。コレクションが空の場合はnilを返します。

    警告

    AddableTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func average<T>(ofProperty property: String) -> T? where T : _HasPersistedType, T.PersistedType : AddableType

    パラメーター

    property

    値を合計するプロパティの名前。

キーと値のコーディング

  • コレクションの各オブジェクトでkeyを使用してvalueForKey(_:)を呼び出した結果を含むArrayを返します。

    宣言

    Swift

    func value(forKey key: String) -> Any?

    パラメーター

    key

    値が必要なプロパティの名前。

  • コレクションの各オブジェクトでkeyPathを使用してvalueForKeyPath(_:)を呼び出した結果を含むArrayを返します。

    宣言

    Swift

    func value(forKeyPath keyPath: String) -> Any?

    パラメーター

    keyPath

    値が必要なプロパティへのキー パス。

  • 指定されたvaluekeyを使用して、コレクション内の各オブジェクトでsetValue(_:forKey:)を呼び出します。

    警告

    このメソッドは、書込みトランザクション中にのみ呼び出されます。

    宣言

    Swift

    func setValue(_ value: Any?, forKey key: String)

    パラメーター

    value

    オブジェクト値。

    key

    各オブジェクトに値を設定するプロパティの名前。

notifications

  • observe(keyPaths:on:_:) デフォルトの実装

    コレクションが変更されるたびに呼び出されるブロックを登録します。

    ブロックは初期結果とは非同期に呼び出され、コレクション内のいずれかのオブジェクトまたはコレクション内のどのオブジェクトのいずれかを変更する書込みトランザクションごとに再度呼び出されます。

    ブロックに渡されるchangeパラメータは、各書込みトランザクション中に追加、削除、または変更されたオブジェクトをコレクション内のインデックスの形式で報告します。 提供される変更情報の詳細と、その変更情報を使用してUITableViewをアップデートする方法の例については、 RealmCollectionChangeのドキュメントを参照してください。

    ブロックが呼び出される時点で、コレクションは完全に評価され、最新の状態になります。また、同じスレッドで書込みトランザクションを実行したり、 realm.refresh()を明示的に呼び出したりしない限り、アクセスに関するブロッキングは実行されません動作する。

    キューが指定されていない場合、通知は標準の実行ループを介して配信されるため、実行ループが他のアクティビティによってブロックされている間は通知を配信できません。 キューが指定されている場合、代わりにそのキューに通知が配信されます。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには、初期コレクションの通知を含めることができます。

    たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。

    let dogs = realm.objects(Dog.self)
    print("dogs.count: \(dogs?.count)") // => 0
    let token = dogs.observe { changes in
        switch changes {
        case .initial(let dogs):
            // Will print "dogs.count: 1"
            print("dogs.count: \(dogs.count)")
            break
        case .update:
            // Will not be hit in this example
            break
        case .error:
            break
        }
    }
    try! realm.write {
        let dog = Dog()
        dog.name = "Rex"
        person.dogs.append(dog)
    }
    // end of run loop execution context
    

    キー パスが指定されていない場合、ブロックは、すべてのオブジェクト プロパティとネストされたリンクされたオブジェクトのプロパティの挿入、変更、または削除時に実行されます。 キー パスが指定されている場合、指定されたキー パスでのみ発生する変更に対してブロックが呼び出されます。 たとえば、次の場合:

    class Dog: Object {
        @Persisted var name: String
        @Persisted var age: Int
        @Persisted var toys: List<Toy>
    }
    // ...
    let dogs = realm.objects(Dog.self)
    
    let token = dogs.observe(keyPaths: ["name"]) { changes in
        switch changes {
        case .initial(let dogs):
           // ...
        case .update:
           // This case is hit:
           // - after the token is initialized
           // - when the name property of an object in the
           // collection is modified
           // - when an element is inserted or removed
           //   from the collection.
           // This block is not triggered:
           // - when a value other than name is modified on
           //   one of the elements.
        case .error:
            // ...
        }
    }
    // end of run loop execution context
    
    • 確認されたキー パスが ["toys.brand"] の場合、コレクションの要素の いずれか にある toys リストへの挿入または削除によってブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 値を変更すると、ブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 以外の値を変更しても、ブロックはtriggerされません。 監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。
    • 上記の例で ["toys"] キー パスが確認された場合、コレクション内の任意の要素の toys リストへの挿入、削除、または変更によってブロックがtriggerされます。 このコレクション内の にリンクされているToy Dogの値を変更しても、ブロックはtrigger され ません 。監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。

    注意

    個別のキー パスでフィルタリングされる同じオブジェクト上の複数の通知トークンは、排他的にフィルタリングされません。 1 つの通知トークンに対して 1 つのキーパスの変更が満たされた場合、そのオブジェクトのすべての通知トークン ブロックが実行されます。

    アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンでinvalidate()を呼び出します。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    デフォルトの実装

    コレクションが変更されるたびに呼び出されるブロックを登録します。

    ブロックは初期結果とは非同期に呼び出され、コレクション内のいずれかのオブジェクトまたはコレクション内のどのオブジェクトのいずれかを変更する書込みトランザクションごとに再度呼び出されます。

    ブロックに渡されるchangeパラメータは、各書込みトランザクション中に追加、削除、または変更されたオブジェクトをコレクション内のインデックスの形式で報告します。 提供される変更情報の詳細と、その変更情報を使用してUITableViewをアップデートする方法の例については、 RealmCollectionChangeのドキュメントを参照してください。

    ブロックが呼び出される時点で、コレクションは完全に評価され、最新の状態になります。また、同じスレッドで書込みトランザクションを実行したり、 realm.refresh()を明示的に呼び出したりしない限り、アクセスに関するブロッキングは実行されません動作する。

    キューが指定されていない場合、通知は標準の実行ループを介して配信されるため、実行ループが他のアクティビティによってブロックされている間は通知を配信できません。 キューが指定されている場合、代わりにそのキューに通知が配信されます。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには、初期コレクションの通知を含めることができます。

    たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。

    let dogs = realm.objects(Dog.self)
    print("dogs.count: \(dogs?.count)") // => 0
    let token = dogs.observe { changes in
        switch changes {
        case .initial(let dogs):
            // Will print "dogs.count: 1"
            print("dogs.count: \(dogs.count)")
            break
        case .update:
            // Will not be hit in this example
            break
        case .error:
            break
        }
    }
    try! realm.write {
        let dog = Dog()
        dog.name = "Rex"
        person.dogs.append(dog)
    }
    // end of run loop execution context
    

    キー パスが指定されていない場合、ブロックは、すべてのオブジェクト プロパティとネストされたリンクされたオブジェクトのプロパティの挿入、変更、または削除時に実行されます。 キー パスが指定されている場合、指定されたキー パスでのみ発生する変更に対してブロックが呼び出されます。 たとえば、次の場合:

    class Dog: Object {
        @Persisted var name: String
        @Persisted var age: Int
        @Persisted var toys: List<Toy>
    }
    // ...
    let dogs = realm.objects(Dog.self)
    
    let token = dogs.observe(keyPaths: [\Dog.name]) { changes in
        switch changes {
        case .initial(let dogs):
           // ...
        case .update:
           // This case is hit:
           // - after the token is initialized
           // - when the name property of an object in the
           // collection is modified
           // - when an element is inserted or removed
           //   from the collection.
           // This block is not triggered:
           // - when a value other than name is modified on
           //   one of the elements.
        case .error:
            // ...
        }
    }
    // end of run loop execution context
    
    • 確認されたキー パスが [\Dog.toys.brand] の場合、コレクションの要素の いずれか にある toys リストへの挿入または削除によってブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 値を変更すると、ブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 以外の値を変更しても、ブロックはtriggerされません。 監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。
    • 上記の例で [\Dog.toys] キー パスが確認された場合、コレクション内の任意の要素の toys リストへの挿入、削除、または変更によってブロックがtriggerされます。 このコレクション内の にリンクされているToy Dogの値を変更しても、ブロックはtrigger され ません 。監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。

    注意

    個別のキー パスでフィルタリングされる同じオブジェクト上の複数の通知トークンは、排他的にフィルタリングされません。 1 つの通知トークンに対して 1 つのキーパスの変更が満たされた場合、そのオブジェクトのすべての通知トークン ブロックが実行されます。

    アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンでinvalidate()を呼び出します。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    宣言

    Swift

    func observe(keyPaths: [String]?,
                 on queue: DispatchQueue?,
                 _ block: @escaping (RealmCollectionChange<Self>) -> Void) -> NotificationToken

    パラメーター

    keyPaths

    キーパス配列に含まれるプロパティのみが変更されたときにブロックをtriggerします。 nilの場合、オブジェクトのプロパティ変更に対して通知が配信されます。 有効な プロパティに対応していないstringキー パスでは例外がスローされます。 リンクされたプロパティの詳細については、上記の説明を参照してください。

    queue

    通知を受信するシリアル ディスパッチ キュー。 nilの場合、通知は現在のスレッドに配信されます。

    block

    変更が発生するたびに呼び出されるブロック。

    戻り値

    更新を配信する限り保持する必要があるトークン。

  • observe(keyPaths:on:_:) デフォルトの実装、非同期

    コレクションが変更されるたびに呼び出されるブロックを登録します。

    ブロックはコレクションの初期バージョンと非同期に呼び出され、コレクション内のいずれかのオブジェクトまたはコレクション内のどのオブジェクトのいずれかを変更する各書込みトランザクションの後に再度呼び出されます。

    ブロックに渡されるactorパラメータは、この関数に渡すアクターです。 このパラメーターは、アクターへのコールバックを分離するために必要です。

    ブロックに渡されるchangeパラメータは、前回の通知後に追加、削除、または変更されたオブジェクトをコレクション内のインデックスの形式で報告します。 変更列挙のcollectionフィールドは要求されたアクターに分離され、そのアクター内でのみ安全に使用できます。 提供される変更情報の詳細と、その変更情報を使用してUITableViewを更新する方法の例については、 RealmCollectionChangeのドキュメントを参照してください。

    最初の通知が配信されると、コレクションは完全に評価されて最新になり、このコレクションにアクセスしてもブロッキング作業は実行されません。 この保証は、通知が配信されるのと同じアクターで書込みトランザクションを実行しない場合にのみ有効です。 その場合、次の通知が配信される前にコレクションにアクセスするには、クエリを再実行する必要がある可能性があります。

    通知は指定されたアクターの実行プログラムに配信されます。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには、初期コレクションの通知を含めることができます。最初の通知が配信される前に発生する書き込みでは、変更通知が生成されない可能性があります。

    コレクション内のオブジェクトを追加、削除、または割り当てると常に通知が生成されます。 デフォルトでは、コレクションがリンクするオブジェクト(およびそれらのオブジェクトがリンクするオブジェクト(該当する場合)を変更すると、コレクション内のそのインデックスも変更されていることが報告されます。 キーパスの空でない配列が指定されている場合、それらのキーパスに対する変更のみによってオブジェクトは変更済みとしてマークされます。 例:

    class Dog: Object {
        @Persisted var name: String
        @Persisted var age: Int
        @Persisted var toys: List<Toy>
    }
    
    let dogs = realm.objects(Dog.self)
    let token = await dogs.observe(keyPaths: ["name"], on: myActor) { actor, changes in
        switch changes {
        case .initial(let dogs):
            // Query has finished running and dogs can not be used without blocking
        case .update:
            // This case is hit:
            // - after the token is initialized
            // - when the name property of an object in the collection is modified
            // - when an element is inserted or removed from the collection.
            // This block is not triggered:
            // - when a value other than name is modified on one of the elements.
        case .error:
            // Can no longer happen but is left for backwards compatiblity
        }
    }
    
    • 確認されたキー パスが ["toys.brand"] の場合、コレクションの要素の いずれか にある toys リストへの挿入または削除によってブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 値を変更すると、ブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 以外の値を変更しても、ブロックはtriggerされません。 監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。
    • 上記の例で ["toys"] キー パスが確認された場合、コレクション内の任意の要素の toys リストへの挿入、削除、または変更によってブロックがtriggerされます。 このコレクション内の にリンクされているToy Dogの値を変更しても、ブロックはtrigger され ません 。監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。

    アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンでinvalidate()を呼び出します。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    デフォルトの実装

    コレクションが変更されるたびに呼び出されるブロックを登録します。

    ブロックはコレクションの初期バージョンと非同期に呼び出され、コレクション内のいずれかのオブジェクトまたはコレクション内のどのオブジェクトのいずれかを変更する各書込みトランザクションの後に再度呼び出されます。

    ブロックに渡されるactorパラメータは、この関数に渡すアクターです。 このパラメーターは、アクターへのコールバックを分離するために必要です。

    ブロックに渡されるchangeパラメータは、前回の通知後に追加、削除、または変更されたオブジェクトをコレクション内のインデックスの形式で報告します。 変更列挙のcollectionフィールドは要求されたアクターに分離され、そのアクター内でのみ安全に使用できます。 提供される変更情報の詳細と、その変更情報を使用してUITableViewを更新する方法の例については、 RealmCollectionChangeのドキュメントを参照してください。

    最初の通知が配信されると、コレクションは完全に評価されて最新になり、このコレクションにアクセスしてもブロッキング作業は実行されません。 この保証は、通知が配信されるのと同じアクターで書込みトランザクションを実行しない場合にのみ有効です。 その場合、次の通知が配信される前にコレクションにアクセスするには、クエリを再実行する必要がある可能性があります。

    通知は指定されたアクターの実行プログラムに配信されます。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには、初期コレクションの通知を含めることができます。最初の通知が配信される前に発生する書き込みでは、変更通知が生成されない可能性があります。

    コレクション内のオブジェクトを追加、削除、または割り当てると常に通知が生成されます。 デフォルトでは、コレクションがリンクするオブジェクト(およびそれらのオブジェクトがリンクするオブジェクト(該当する場合)を変更すると、コレクション内のそのインデックスも変更されていることが報告されます。 キーパスの空でない配列が指定されている場合、それらのキーパスに対する変更のみによってオブジェクトは変更済みとしてマークされます。 例:

    class Dog: Object {
        @Persisted var name: String
        @Persisted var age: Int
        @Persisted var toys: List<Toy>
    }
    
    let dogs = realm.objects(Dog.self)
    let token = await dogs.observe(keyPaths: ["name"], on: myActor) { actor, changes in
        switch changes {
        case .initial(let dogs):
            // Query has finished running and dogs can not be used without blocking
        case .update:
            // This case is hit:
            // - after the token is initialized
            // - when the name property of an object in the collection is modified
            // - when an element is inserted or removed from the collection.
            // This block is not triggered:
            // - when a value other than name is modified on one of the elements.
        case .error:
            // Can no longer happen but is left for backwards compatiblity
        }
    }
    
    • 確認されたキー パスが ["toys.brand"] の場合、コレクションの要素の いずれか にある toys リストへの挿入または削除によってブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 値を変更すると、ブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 以外の値を変更しても、ブロックはtriggerされません。 監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。
    • 上記の例で ["toys"] キー パスが確認された場合、コレクション内の任意の要素の toys リストへの挿入、削除、または変更によってブロックがtriggerされます。 このコレクション内の にリンクされているToy Dogの値を変更しても、ブロックはtrigger され ません 。監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。

    アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンでinvalidate()を呼び出します。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    宣言

    Swift

    @available(macOS 10.15, tvOS 13.0, iOS 13.0, watchOS 6.0, *)
    @_unsafeInheritExecutor
    func observe<A: Actor>(keyPaths: [String]?,
                           on actor: A,
                           _ block: @Sendable @escaping (isolated A, RealmCollectionChange<Self>) -> Void) async -> NotificationToken

    パラメーター

    keyPaths

    キーパス配列に含まれるプロパティのみが変更されたときにブロックをtriggerします。 nilまたは空の場合、オブジェクトのプロパティ変更に対して通知が配信されます。 有効な プロパティに対応していないstringキー パスでは例外がスローされます。 リンクされたプロパティの詳細については、上記の説明を参照してください。

    actor

    通知を分離するアクター。

    block

    変更が発生するたびに呼び出されるブロック。

    戻り値

    更新を配信する限り保持する必要があるトークン。

凍結されたオブジェクト

  • このコレクションが固定されている場合は true を返します

    宣言

    Swift

    var isFrozen: Bool { get }
  • このコレクションの固定(不変)スナップショットを返します。

    固定されたコピーは、このコレクションに現在含まれているデータと同じデータを含む不変のコレクションですが、含まれている Realm への書込み (write) が行われても更新されません。 ライブコレクションとは異なり、固定コレクションには任意のスレッドからアクセスできます。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    警告

    Realm で書込みトランザクションを実行中に固定されたコレクションを長時間保持すると、Realm ファイルのサイズが大きくなる可能性があります。 詳しくは、 Realm.Configuration.maximumNumberOfActiveVersionsを参照してください。

    宣言

    Swift

    func freeze() -> Self
  • この固定されたコレクションのライブ(可変)バージョンを返します。

    このメソッドは、同じ固定コレクションのライブ コピーへの参照を解決します。 ライブ コレクションで呼び出されると、 は自分自身を返します。

    宣言

    Swift

    func thaw() -> Self?
  • このコレクションを指定されたソート記述子の配列からソートし、ユーザー定義のコールバックを介してセクション化を実行し、その結果をSectionedResultsのインスタンスとして返します。

    注意

    プライマリソート記述子は、セクションキーの決定を担当する必要があります。

    宣言

    Swift

    func sectioned<Key: _Persistable>(sortDescriptors: [SortDescriptor],
                                      _ keyBlock: @escaping ((Element) -> Key)) -> SectionedResults<Key, Element>

    パラメーター

    sortDescriptors

    並べ替え対象のSortDescriptorの配列。

    keyBlock

    結果コレクション内の各要素に対して呼び出されるコールバック。 このコールバックは、 コレクション内の要素のセクション キーを返すものです。

    戻り値

    SectionedResultsのインスタンス。

型セーフなクエリ

  • where(_:) 拡張メソッド

    コレクション内の指定されたクエリに一致するすべてのオブジェクトを含むResultsを返します。

    注意

    これは、 @Persistableプロパティ宣言を使用するクラスでのみ使用する必要があります。

    • 使用法:

      myCol.where {
      ($0.fooCol > 5) && ($0.barCol == "foobar")
      }
      

    注意

    利用可能なクエリ操作の詳細については、 Queryを参照してください。

    宣言

    Swift

    func `where`(_ isIncluded: ((Query<Element>) -> Query<Bool>)) -> Results<Element>

    パラメーター

    isIncluded

    オブジェクトをフィルタリングするために使用する クエリ閉じ 。

コレクションプロトコル

  • startIndex 拡張メソッド

    空でないコレクション内の最初の要素の位置。 空のコレクション内の endIndex と同じ。

    宣言

    Swift

    var startIndex: Int { get }
  • endIndex 拡張メソッド

    コレクションの「終了を過ぎた」位置。 endIndex はサブスクリプトへの有効な引数ではなく、成功します()の 0 個以上のアプリケーションによって startIndex から常にアクセス可能です。

    宣言

    Swift

    var endIndex: Int { get }
  • index(after:) 拡張メソッド

    指定されたインデックスの直後の位置を返します。

    宣言

    Swift

    func index(after i: Int) -> Int

    パラメーター

    i

    コレクションの有効なインデックス。 iendIndexより小さくなければなりません。

  • index(before:) 拡張メソッド

    指定されたインデックスの直前の位置を返します。

    宣言

    Swift

    func index(before i: Int) -> Int

    パラメーター

    i

    コレクションの有効なインデックス。 istartIndexより大きくなければなりません。

プリミティブに関するセクションされた結果

  • sectioned(by:ascending:) 拡張メソッド

    このコレクションを昇順または降順でソートし、ユーザー定義のコールバック関数を介してセクションを実行します。

    宣言

    Swift

    func sectioned<Key: _Persistable>(by block: @escaping ((Element) -> Key),
                                      ascending: Bool = true) -> SectionedResults<Key, Element>

    パラメーター

    block

    コレクション内の各要素に対して呼び出されるコールバック。 このコールバックは、 コレクション内の要素のセクション キーを返すものです。

    ascending

    並べ替える方向。

    戻り値

    SectionedResultsのインスタンス。

観察

  • sectioned(by:ascending:) 拡張メソッド

    このコレクションを指定されたプロパティ キー パスからソートしてセクションを作成し、その結果をSectionedResultsのインスタンスとして返します。 keyPath から検索されたすべての一意の値に対してセクション キーが生成されます。

    宣言

    Swift

    public func sectioned<Key: _Persistable, O: ObjectBase>(by keyPath: KeyPath<Element, Key>,
                                                            ascending: Bool = true) -> SectionedResults<Key, Element> where Element: Projection<O>

    パラメーター

    keyPath

    ソートするプロパティ キー パス。

    ascending

    並べ替える方向。

    戻り値

    SectionedResultsのインスタンス。

  • sectioned(by:sortDescriptors:) 拡張メソッド

    このコレクションを指定されたプロパティ キー パスからソートしてセクションを作成し、その結果をSectionedResultsのインスタンスとして返します。 keyPath から検索されたすべての一意の値に対してセクション キーが生成されます。

    注意

    プライマリソート記述子は、セクションキーの決定を担当する必要があります。

    宣言

    Swift

    public func sectioned<Key: _Persistable, O: ObjectBase>(by keyPath: KeyPath<Element, Key>,
                                                            sortDescriptors: [SortDescriptor]) -> SectionedResults<Key, Element> where Element: Projection<O>

    パラメーター

    keyPath

    ソートするプロパティ キー パス。

    sortDescriptors

    並べ替え対象のSortDescriptorの配列。

    戻り値

    SectionedResultsのインスタンス。

  • sectioned(by:sortDescriptors:) 拡張メソッド

    このコレクションを指定されたソート記述子の配列からソートし、ユーザー定義のコールバックからセクション作成を実行し、その結果をSectionedResultsのインスタンスとして返します。

    注意

    プライマリソート記述子は、セクションキーの決定を担当する必要があります。

    宣言

    Swift

    public func sectioned<Key: _Persistable, O: ObjectBase>(by block: @escaping ((Element) -> Key),
                                                            sortDescriptors: [SortDescriptor]) -> SectionedResults<Key, Element> where Element: Projection<O>

    パラメーター

    block

    結果コレクション内の各要素に対して呼び出されるコールバック。 このコールバックは、 コレクション内の要素のセクション キーを返すものです。

    sortDescriptors

    並べ替え対象のSortDescriptorの配列。

    戻り値

    SectionedResultsのインスタンス。

Self : RealmSubscribableで利用可能

  • objectWillChange 拡張メソッド

    コレクションが変更されるたびに Vid を発行する出版社。

    名前に関係なく、コレクションが変更されたにこれが実際に発行します。

    宣言

    Swift

    public var objectWillChange: RealmPublishers.WillChange<Self> { get }
  • collectionPublisher 拡張メソッド

    コレクションが変更されるたびにコレクションを発行する出版社。

    宣言

    Swift

    public var collectionPublisher: RealmPublishers.Value<Self> { get }
  • collectionPublisher(keyPaths:) 拡張メソッド

    指定されたプロパティ keyPaths でコレクションが変更されるたびにコレクションを発行する出版社。

    宣言

    Swift

    public func collectionPublisher(keyPaths: [String]?) -> RealmPublishers.Value<Self>
  • changesetPublisher 拡張メソッド

    コレクションが変更されるたびにコレクションの変更セットを発行する出版社。

    宣言

    Swift

    public var changesetPublisher: RealmPublishers.CollectionChangeset<Self> { get }
  • changesetPublisher(keyPaths:) 拡張メソッド

    指定されたプロパティ keyPaths でコレクションが変更されるたびにコレクションの変更セットを発行する出版社。

    宣言

    Swift

    public func changesetPublisher(keyPaths: [String]?) -> RealmPublishers.CollectionChangeset<Self>

Element : Encodableで利用可能

  • encode(to:) 拡張メソッド

    このコレクションの内容を指定されたエンコードにエンコードします。

    宣言

    Swift

    public func encode(to encoder: Encoder) throws

Element : ObjectBaseで利用可能

  • min(of:) 拡張メソッド

    コレクション内のすべてのオブジェクト間で指定されたプロパティの最小(最小)値を返します。コレクションが空の場合はnilを返します。

    警告

    MinMaxTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func min<T>(of keyPath: KeyPath<Element, T>) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType

    パラメーター

    keyPath

    最小値が必要なプロパティの keyPath 。

  • max(of:) 拡張メソッド

    コレクション内のすべてのオブジェクト間で指定されたプロパティの最大値(最高値)を返します。コレクションが空の場合はnilを返します。

    警告

    MinMaxTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func max<T>(of keyPath: KeyPath<Element, T>) -> T? where T : _HasPersistedType, T.PersistedType : MinMaxType

    パラメーター

    keyPath

    最小値が必要なプロパティの keyPath 。

  • sum(of:) 拡張メソッド

    コレクション内のオブジェクトの指定された プロパティの合計を返します。コレクションが空の場合はnilです。

    警告

    AddableTypeプロトコルに準拠した型のプロパティ名のみを使用できます。

    宣言

    Swift

    func sum<T>(of keyPath: KeyPath<Element, T>) -> T where T : _HasPersistedType, T.PersistedType : AddableType

    パラメーター

    keyPath

    合計を計算するためのAddableTypeに準拠したプロパティの keyPath 。

  • average(of:) 拡張メソッド

    コレクション内のすべてのオブジェクトにわたる指定されたプロパティの平均値を返します。コレクションが空の場合はnilを返します。

    警告

    AddableTypeプロトコルに準拠するタイプのプロパティのみを指定できます。

    宣言

    Swift

    func average<T>(of keyPath: KeyPath<Element, T>) -> T? where T : _HasPersistedType, T.PersistedType : AddableType

    パラメーター

    keyPath

    値を合計する必要があるプロパティの keyPath 。

  • sectioned(by:ascending:) 拡張メソッド

    このコレクションを指定されたプロパティ キー パスからソートしてセクションを作成し、その結果をSectionedResultsのインスタンスとして返します。 keyPath から検索されたすべての一意の値に対してセクション キーが生成されます。

    宣言

    Swift

    func sectioned<Key: _Persistable>(by keyPath: KeyPath<Element, Key>,
                                      ascending: Bool = true) -> SectionedResults<Key, Element> where Element: ObjectBase

    パラメーター

    keyPath

    および セクションのプロパティ キー パス。

    ascending

    並べ替える方向。

    戻り値

    SectionedResultsのインスタンス。

  • sectioned(by:sortDescriptors:) 拡張メソッド

    このコレクションを指定されたプロパティ キー パスからソートしてセクションを作成し、その結果をSectionedResultsのインスタンスとして返します。 keyPath から検索されたすべての一意の値に対してセクション キーが生成されます。

    注意

    プライマリソート記述子は、セクションキーの決定を担当する必要があります。

    宣言

    Swift

    func sectioned<Key: _Persistable>(by keyPath: KeyPath<Element, Key>,
                                      sortDescriptors: [SortDescriptor]) -> SectionedResults<Key, Element> where Element: ObjectBase

    パラメーター

    keyPath

    および セクションのプロパティ キー パス。

    sortDescriptors

    並べ替え対象のSortDescriptorの配列。

    戻り値

    SectionedResultsのインスタンス。

  • sectioned(by:sortDescriptors:) 拡張メソッド

    このコレクションをSortDescriptorの指定された配列からソートし、ユーザー定義のコールバック関数を介してセクションを実行します。

    注意

    プライマリソート記述子は、セクションキーの決定を担当する必要があります。

    宣言

    Swift

    func sectioned<Key: _Persistable>(by block: @escaping ((Element) -> Key),
                                      sortDescriptors: [SortDescriptor]) -> SectionedResults<Key, Element> where Element: ObjectBase

    パラメーター

    block

    コレクション内の各要素に対して呼び出されるコールバック。 このコールバックは、 コレクション内の要素のセクション キーを返すものです。

    sortDescriptors

    並べ替え対象のSortDescriptorの配列。

    戻り値

    SectionedResultsのインスタンス。

Element.PersistedType : MinMaxTypeで利用可能

  • min() 拡張メソッド

    コレクションの最小(最小)値を返します。コレクションが空の場合はnilを返します。

    宣言

    Swift

    func min() -> Element?
  • max() 拡張メソッド

    コレクションの最大値(最高値)を返します。コレクションが空の場合はnilを返します。

    宣言

    Swift

    func max() -> Element?

Element.PersistedType : AddableTypeで利用可能

  • sum() 拡張メソッド

    コレクション内の 値の合計を返します。コレクションが空の場合はnilを返します。

    宣言

    Swift

    func sum() -> Element
  • average() 拡張メソッド

    コレクション内のすべての値の平均を返します。

    宣言

    Swift

    func average<T>() -> T? where T : _HasPersistedType, T.PersistedType : AddableType

Element : KeypathSortableで利用可能

  • sorted(byKeyPath:ascending:) 拡張メソッド

    コレクション内のオブジェクトを含むResultsをソートされた状態で返します。

    オブジェクトは、指定されたキー パスの値に基づいてソートされます。 たとえば、 Studentのコレクションをageプロパティに基づいて、小さいものから古い順に並べ替えるには、 students.sorted(byKeyPath: "age", ascending: true)を呼び出します。

    警告

    コレクションは、ブール値、DateNSDate、単一および倍精度浮動小数点、整数、およびstring型のプロパティでのみソートできます。

    宣言

    Swift

    func sorted(byKeyPath keyPath: String, ascending: Bool = true) -> Results<Element>

    パラメーター

    keyPath

    ソートするキー パス。

    ascending

    並べ替える方向。

  • sorted(by:ascending:) 拡張メソッド

    コレクション内のオブジェクトを含むResultsをソートされた状態で返します。

    オブジェクトは、指定されたキー パスの値に基づいてソートされます。 たとえば、 Studentのコレクションをageプロパティに基づいて、小さいものから古い順に並べ替えるには、 students.sorted(byKeyPath: "age", ascending: true)を呼び出します。

    警告

    コレクションは、ブール値、DateNSDate、単一および倍精度浮動小数点、整数、およびstring型のプロパティでのみソートできます。

    宣言

    Swift

    func sorted<T>(by keyPath: KeyPath<Element, T>, ascending: Bool = true) -> Results<Element> where T : _HasPersistedType, Self.Element : RLMObjectBase, T.PersistedType : SortableType

    パラメーター

    keyPath

    ソートするキー パス。

    ascending

    並べ替える方向。

  • distinct(by:) デフォルトの実装

    デフォルトの実装

    指定されたキー パスに基づいて個別のオブジェクトを含むResultsを返します

    宣言

    Swift

    func distinct<S: Sequence>(by keyPaths: S) -> Results<Element>
        where S.Iterator.Element == PartialKeyPath<Element>, Element: ObjectBase

    パラメーター

    keyPaths

    使用されるキー パスは異なる結果を生成します

Element.PersistedType : SortableTypeで利用可能

  • sorted(ascending:) 拡張メソッド

    コレクション内のオブジェクトを含むResultsをソートされた状態で返します。

    オブジェクトは、 値に基づいてソートされます。 たとえば、 Dateのコレクションを新しいセットから最も古い順に並べ替えるには、 dates.sorted(ascending: true)を呼び出します。

    宣言

    Swift

    func sorted(ascending: Bool = true) -> Results<Element>

    パラメーター

    ascending

    並べ替える方向。

  • distinct() 拡張メソッド

    コレクション内の個別の値を含むResultsを返します。

    宣言

    Swift

    func distinct() -> Results<Element>

Element : ObjectBaseで利用可能

  • observe(keyPaths:on:_:) デフォルトの実装

    デフォルトの実装

    コレクションが変更されるたびに呼び出されるブロックを登録します。

    ブロックは初期結果とは非同期に呼び出され、コレクション内のいずれかのオブジェクトまたはコレクション内のどのオブジェクトのいずれかを変更する書込みトランザクションごとに再度呼び出されます。

    ブロックに渡されるchangeパラメータは、各書込みトランザクション中に追加、削除、または変更されたオブジェクトをコレクション内のインデックスの形式で報告します。 提供される変更情報の詳細と、その変更情報を使用してUITableViewをアップデートする方法の例については、 RealmCollectionChangeのドキュメントを参照してください。

    ブロックが呼び出される時点で、コレクションは完全に評価され、最新の状態になります。また、同じスレッドで書込みトランザクションを実行したり、 realm.refresh()を明示的に呼び出したりしない限り、アクセスに関するブロッキングは実行されません動作する。

    キューが指定されていない場合、通知は標準の実行ループを介して配信されるため、実行ループが他のアクティビティによってブロックされている間は通知を配信できません。 キューが指定されている場合、代わりにそのキューに通知が配信されます。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには、初期コレクションの通知を含めることができます。

    たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。

    let dogs = realm.objects(Dog.self)
    print("dogs.count: \(dogs?.count)") // => 0
    let token = dogs.observe { changes in
        switch changes {
        case .initial(let dogs):
            // Will print "dogs.count: 1"
            print("dogs.count: \(dogs.count)")
            break
        case .update:
            // Will not be hit in this example
            break
        case .error:
            break
        }
    }
    try! realm.write {
        let dog = Dog()
        dog.name = "Rex"
        person.dogs.append(dog)
    }
    // end of run loop execution context
    

    キー パスが指定されていない場合、ブロックは、すべてのオブジェクト プロパティとネストされたリンクされたオブジェクトのプロパティの挿入、変更、または削除時に実行されます。 キー パスが指定されている場合、指定されたキー パスでのみ発生する変更に対してブロックが呼び出されます。 たとえば、次の場合:

    class Dog: Object {
        @Persisted var name: String
        @Persisted var age: Int
        @Persisted var toys: List<Toy>
    }
    // ...
    let dogs = realm.objects(Dog.self)
    
    let token = dogs.observe(keyPaths: [\Dog.name]) { changes in
        switch changes {
        case .initial(let dogs):
           // ...
        case .update:
           // This case is hit:
           // - after the token is initialized
           // - when the name property of an object in the
           // collection is modified
           // - when an element is inserted or removed
           //   from the collection.
           // This block is not triggered:
           // - when a value other than name is modified on
           //   one of the elements.
        case .error:
            // ...
        }
    }
    // end of run loop execution context
    
    • 確認されたキー パスが [\Dog.toys.brand] の場合、コレクションの要素の いずれか にある toys リストへの挿入または削除によってブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 値を変更すると、ブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 以外の値を変更しても、ブロックはtriggerされません。 監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。
    • 上記の例で [\Dog.toys] キー パスが確認された場合、コレクション内の任意の要素の toys リストへの挿入、削除、または変更によってブロックがtriggerされます。 このコレクション内の にリンクされているToy Dogの値を変更しても、ブロックはtrigger され ません 。監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。

    注意

    個別のキー パスでフィルタリングされる同じオブジェクト上の複数の通知トークンは、排他的にフィルタリングされません。 1 つの通知トークンに対して 1 つのキーパスの変更が満たされた場合、そのオブジェクトのすべての通知トークン ブロックが実行されます。

    アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンでinvalidate()を呼び出します。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    宣言

    Swift

    func observe(keyPaths: [PartialKeyPath<Element>],
                 on queue: DispatchQueue? = nil,
                 _ block: @escaping (RealmCollectionChange<Self>) -> Void) -> NotificationToken

    パラメーター

    keyPaths

    キーパス配列に含まれるプロパティのみが変更されたときにブロックをtriggerします。 リンクされたプロパティの詳細については、上記の説明を参照してください。

    queue

    通知を受信するシリアル ディスパッチ キュー。 nilの場合、通知は現在のスレッドに配信されます。

    block

    変更が発生するたびに呼び出されるブロック。

    戻り値

    更新を配信する限り保持する必要があるトークン。

  • observe(keyPaths:on:_:) デフォルトの実装、非同期

    デフォルトの実装

    コレクションが変更されるたびに呼び出されるブロックを登録します。

    ブロックはコレクションの初期バージョンと非同期に呼び出され、コレクション内のいずれかのオブジェクトまたはコレクション内のどのオブジェクトのいずれかを変更する各書込みトランザクションの後に再度呼び出されます。

    ブロックに渡されるactorパラメータは、この関数に渡すアクターです。 このパラメーターは、アクターへのコールバックを分離するために必要です。

    ブロックに渡されるchangeパラメータは、前回の通知後に追加、削除、または変更されたオブジェクトをコレクション内のインデックスの形式で報告します。 変更列挙のcollectionフィールドは要求されたアクターに分離され、そのアクター内でのみ安全に使用できます。 提供される変更情報の詳細と、その変更情報を使用してUITableViewを更新する方法の例については、 RealmCollectionChangeのドキュメントを参照してください。

    最初の通知が配信されると、コレクションは完全に評価されて最新になり、このコレクションにアクセスしてもブロッキング作業は実行されません。 この保証は、通知が配信されるのと同じアクターで書込みトランザクションを実行しない場合にのみ有効です。 その場合、次の通知が配信される前にコレクションにアクセスするには、クエリを再実行する必要がある可能性があります。

    通知は指定されたアクターの実行プログラムに配信されます。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには、初期コレクションの通知を含めることができます。最初の通知が配信される前に発生する書き込みでは、変更通知が生成されない可能性があります。

    コレクション内のオブジェクトを追加、削除、または割り当てると常に通知が生成されます。 デフォルトでは、コレクションがリンクするオブジェクト(およびそれらのオブジェクトがリンクするオブジェクト(該当する場合)を変更すると、コレクション内のそのインデックスも変更されていることが報告されます。 キーパスの空でない配列が指定されている場合、それらのキーパスに対する変更のみによってオブジェクトは変更済みとしてマークされます。 例:

    class Dog: Object {
        @Persisted var name: String
        @Persisted var age: Int
        @Persisted var toys: List<Toy>
    }
    
    let dogs = realm.objects(Dog.self)
    let token = await dogs.observe(keyPaths: [\.name], on: myActor) { actor, changes in
        switch changes {
        case .initial(let dogs):
            // Query has finished running and dogs can not be used without blocking
        case .update:
            // This case is hit:
            // - after the token is initialized
            // - when the name property of an object in the collection is modified
            // - when an element is inserted or removed from the collection.
            // This block is not triggered:
            // - when a value other than name is modified on one of the elements.
        case .error:
            // Can no longer happen but is left for backwards compatiblity
        }
    }
    
    • 確認されたキー パスが [\.toys.brand] の場合、コレクションの要素の いずれか にある toys リストへの挿入または削除によってブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 値を変更すると、ブロックがtriggerされます。 このコレクション内の Dog にリンクされている Toybrand 以外の値を変更しても、ブロックはtriggerされません。 監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。
    • 上記の例で [\.toys] キー パスが確認された場合、コレクション内の任意の要素の toys リストへの挿入、削除、または変更によってブロックがtriggerされます。 このコレクション内の にリンクされているToy Dogの値を変更しても、ブロックはtrigger され ません 。監視対象の Dog 型コレクションへの挿入または削除によって通知がtriggerされます。

    アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンでinvalidate()を呼び出します。

    警告

    このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。

    宣言

    Swift

    @available(macOS 10.15, tvOS 13.0, iOS 13.0, watchOS 6.0, *)
    @_unsafeInheritExecutor
    func observe<A: Actor>(keyPaths: [PartialKeyPath<Element>], on actor: A,
                           _ block: @Sendable @escaping (isolated A, RealmCollectionChange<Self>) -> Void) async -> NotificationToken

    パラメーター

    keyPaths

    キーパス配列に含まれるプロパティのみが変更されたときにブロックをtriggerします。 空の場合、オブジェクトのプロパティ変更に対して通知が配信されます。 有効な プロパティに対応していないstringキー パスでは例外がスローされます。 リンクされたプロパティの詳細については、上記の説明を参照してください。

    actor

    通知を分離するアクター。

    block

    変更が発生するたびに呼び出されるブロック。

    戻り値

    更新を配信する限り保持する必要があるトークン。