RLMSectionedResults

Objective-C

@interface RLMSectionedResults<RLMKeyType : id <RLMValue>,
                               RLMObjectType : id <RLMValue>>
    : NSObject <RLMSectionedResult>

Swift

@_nonSendable(_assumed) class RLMSectionedResults<RLMKeyType, RLMObjectType> : NSObject, RLMSectionedResult where RLMKeyType : RLMValue, RLMObjectType : RLMValue

セクション キーによって決定されたセクション内の要素を保持する遅延評価コレクション。

  • セクション化された結果コレクション内のすべてのキーの配列。

    宣言

    Objective-C

    @property (nonatomic) NSArray<RLMKeyType> *_Nonnull allKeys;

    Swift

    var allKeys: [RLMKeyType] { get set }
  • このコレクション内のセクションの合計量。

    宣言

    Objective-C

    @property (nonatomic, readonly) NSUInteger count;

    Swift

    var count: UInt { get }
  • 指定されたインデックスのセクションを返します。

    宣言

    Objective-C

    - (nonnull RLMSection<RLMKeyType, RLMObjectType> *)objectAtIndexedSubscript:
        (NSUInteger)index;

    Swift

    subscript(index: UInt) -> RLMSection<RLMKeyType, RLMObjectType> { get }
  • 指定されたインデックスのセクションを返します。

    宣言

    Objective-C

    - (nonnull RLMSection<RLMKeyType, RLMObjectType> *)objectAtIndex:
        (NSUInteger)index;

    Swift

    func object(at index: UInt) -> RLMSection<RLMKeyType, RLMObjectType>

Freeze

  • このセクション化された結果コレクションの固定(不変)スナップショットを返します。

    The frozen copy is an immutable sectioned results collection which contains the same data as this sectioned results collection currently contains, but will not update when writes are made to the containing Realm. ライブ セクション化された結果コレクションとは異なり、固定されたセクション化された結果コレクションには任意のスレッドからアクセスできます。

    警告

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

    警告

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

    宣言

    Objective-C

    - (nonnull instancetype)freeze;

    Swift

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

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

    宣言

    Objective-C

    - (nonnull instancetype)thaw;

    Swift

    func thaw() -> Self
  • 基礎となるセクション化された結果コレクションが固定されているかどうかを示します。

    凍結されたセクション化された結果コレクションは不変であり、どのスレッドからでもアクセスできます。

    宣言

    Objective-C

    @property (nonatomic, readonly, getter=isFrozen) BOOL frozen;

    Swift

    var isFrozen: Bool { get }

セクション化された結果の通知

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

    ブロックは最初のセクション化された結果コレクションとは非同期に呼び出され、結果内のいずれかのオブジェクトまたは結果内のどのオブジェクトが変更されるたびに、再度呼び出されます。

    ブロックが初めて呼び出されるときに、 changeパラメータはnilになります。 その後の呼び出しごとに、 セクション内のどの行が追加、削除、または変更されたかに関する情報が含まれます。 書込みトランザクションによって セクション内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。 変更が報告される方法と、 UITableViewの更新例については、 RLMSectionedResultsChangeのドキュメントを参照してください。

    ブロックが呼び出される時点で、 RLMSectionedResultsオブジェクトは完全に評価され、最新の状態になります。

    通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。

    RMResults *results = [Dog allObjects] RLMSectionedResults *sectionedResults = [resultsectionedResultsUsingKeyPath:@"age" の昇順:返し] server.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultschange *changes)] { // サンプル用に 1 回起動した場合にのみ実行されます。 // => 1 }] は、 [realm transactionWithBlock:^{dog *dog =[[Dog allloc] init] のdomain.name = @"Rex" dog.age = 5 、 [realm addObject:dog]/ } は、 // 実行ループ実行コンテキストの終了

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

    警告

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

    警告

    キューはシリアル キューである必要があります。

    宣言

    Objective-C

    - (nonnull RLMNotificationToken *)addNotificationBlock:
        (nonnull void (^)(RLMSectionedResults<RLMKeyType, RLMObjectType> *_Nonnull,
                          RLMSectionedResultsChange *_Nonnull))block;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSectionedResults<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void) -> RLMNotificationToken

    パラメーター

    block

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

    戻り値

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

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

    ブロックは最初のセクション化された結果コレクションとは非同期に呼び出され、結果内のいずれかのオブジェクトまたは結果内のどのオブジェクトが変更されるたびに、再度呼び出されます。

    ブロックが初めて呼び出されるときに、 changeパラメータはnilになります。 その後の呼び出しごとに、 セクション内のどの行が追加、削除、または変更されたかに関する情報が含まれます。 書込みトランザクションによって セクション内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。 変更が報告される方法と、 UITableViewの更新例については、 RLMSectionedResultsChangeのドキュメントを参照してください。

    ブロックが呼び出される時点で、 RLMSectionedResultsオブジェクトは完全に評価され、最新の状態になります。

    通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。

    RMResults *results = [Dog allObjects] RLMSectionedResults *sectionedResults = [resultsectionedResultsUsingKeyPath:@"age" の昇順:返し] server.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultschange *changes)] { // サンプル用に 1 回起動した場合にのみ実行されます。 // => 1 }] は、 [realm transactionWithBlock:^{dog *dog =[[Dog allloc] init] のdomain.name = @"Rex" dog.age = 5 、 [realm addObject:dog]/ } は、 // 実行ループ実行コンテキストの終了

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

    警告

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

    警告

    キューはシリアル キューである必要があります。

    宣言

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:
            (nonnull void (^)(
                RLMSectionedResults<RLMKeyType, RLMObjectType> *_Nonnull,
                RLMSectionedResultsChange *_Nonnull))block
                       queue:(nonnull dispatch_queue_t)queue;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSectionedResults<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, queue: dispatch_queue_t) -> RLMNotificationToken

    パラメーター

    block

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

    queue

    通知を送信するシリアル キュー。

    戻り値

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

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

    ブロックは最初のセクション化された結果コレクションとは非同期に呼び出され、結果内のいずれかのオブジェクトまたは結果内のどのオブジェクトが変更されるたびに、再度呼び出されます。

    ブロックが初めて呼び出されるときに、 changeパラメータはnilになります。 その後の呼び出しごとに、 セクション内のどの行が追加、削除、または変更されたかに関する情報が含まれます。 書込みトランザクションによって セクション内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。 変更が報告される方法と、 UITableViewの更新例については、 RLMSectionedResultsChangeのドキュメントを参照してください。

    ブロックが呼び出される時点で、 RLMSectionedResultsオブジェクトは完全に評価され、最新の状態になります。

    通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。

    RMResults *results = [Dog allObjects] RLMSectionedResults *sectionedResults = [resultsectionedResultsUsingKeyPath:@"age" の昇順:返し] server.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultschange *changes)] { // サンプル用に 1 回起動した場合にのみ実行されます。 // => 1 }] は、 [realm transactionWithBlock:^{dog *dog =[[Dog allloc] init] のdomain.name = @"Rex" dog.age = 5 、 [realm addObject:dog]/ } は、 // 実行ループ実行コンテキストの終了

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

    警告

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

    警告

    キューはシリアル キューである必要があります。

    注意

    キーパスでフィルタリングすると、次のシナリオで通知が起動されます。

    • コレクション内のオブジェクトがフィルタリングされたプロパティで変更されました。
    • セクション キー パス プロパティでオブジェクトが変更され、その変更の結果により セクション内のその位置が変更された場合、またはオブジェクトを別のセクションに移動する必要がある場合があります。
    • 同じ監視対象タイプのオブジェクトが Realm から挿入または削除されました。

    宣言

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:
            (nonnull void (^)(
                RLMSectionedResults<RLMKeyType, RLMObjectType> *_Nonnull,
                RLMSectionedResultsChange *_Nonnull))block
                    keyPaths:(nonnull NSArray<NSString *> *)keyPaths;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSectionedResults<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, keyPaths: [String]) -> RLMNotificationToken

    パラメーター

    block

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

    keyPaths

    これらのキーパスで発生した変更に対してブロックが呼び出されます。 キー パスが指定されていない場合、プロパティ キー パスごとに通知が配信されます。

    戻り値

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

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

    ブロックは最初のセクション化された結果コレクションとは非同期に呼び出され、結果内のいずれかのオブジェクトまたは結果内のどのオブジェクトが変更されるたびに、再度呼び出されます。

    ブロックが初めて呼び出されるときに、 changeパラメータはnilになります。 その後の呼び出しごとに、 セクション内のどの行が追加、削除、または変更されたかに関する情報が含まれます。 書込みトランザクションによって セクション内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。 変更が報告される方法と、 UITableViewの更新例については、 RLMSectionedResultsChangeのドキュメントを参照してください。

    ブロックが呼び出される時点で、 RLMSectionedResultsオブジェクトは完全に評価され、最新の状態になります。

    通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。

    RMResults *results = [Dog allObjects] RLMSectionedResults *sectionedResults = [resultsectionedResultsUsingKeyPath:@"age" の昇順:返し] server.token = [sectionedResults addNotificationBlock:^(RLMSectionedResults *sectionedResults, RLMSectionedResultschange *changes)] { // サンプル用に 1 回起動した場合にのみ実行されます。 // => 1 }] は、 [realm transactionWithBlock:^{dog *dog =[[Dog allloc] init] のdomain.name = @"Rex" dog.age = 5 、 [realm addObject:dog]/ } は、 // 実行ループ実行コンテキストの終了

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

    警告

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

    警告

    キューはシリアル キューである必要があります。

    注意

    キーパスでフィルタリングすると、次のシナリオで通知が起動されます。

    • コレクション内のオブジェクトがフィルタリングされたプロパティで変更されました。
    • セクション キー パス プロパティでオブジェクトが変更され、その変更の結果により セクション内のその位置が変更された場合、またはオブジェクトを別のセクションに移動する必要がある場合があります。
    • 同じ監視対象タイプのオブジェクトが Realm から挿入または削除されました。

    宣言

    Objective-C

    - (nonnull RLMNotificationToken *)
        addNotificationBlock:
            (nonnull void (^)(
                RLMSectionedResults<RLMKeyType, RLMObjectType> *_Nonnull,
                RLMSectionedResultsChange *_Nonnull))block
                    keyPaths:(nullable NSArray<NSString *> *)keyPaths
                       queue:(nullable dispatch_queue_t)queue;

    Swift

    func addNotificationBlock(_ block: @escaping (RLMSectionedResults<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, keyPaths: [String]?, queue: dispatch_queue_t?) -> RLMNotificationToken

    パラメーター

    block

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

    keyPaths

    これらのキーパスで発生した変更に対してブロックが呼び出されます。 キー パスが指定されていない場合、プロパティ キー パスごとに通知が配信されます。

    queue

    通知を送信するシリアル キュー。

    戻り値

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