RLMSection
Objective-C
@interface RLMSection<RLMKeyType : id <RLMValue>, RLMObjectType>
: NSObject <RLMSectionedResult>
Swift
@_nonSendable(_assumed) class RLMSection<RLMKeyType, RLMObjectType> : NSObject, RLMSectionedResult where RLMKeyType : RLMValue, RLMObjectType : AnyObject
RLMSection には、指定されたセクション キーに属するオブジェクトが含まれます。
-
このセクションのキーを表す値。
宣言
Objective-C
@property (nonatomic, readonly) RLMKeyType _Nonnull key;
Swift
var key: RLMKeyType { get }
-
セクション内のオブジェクトの数。
宣言
Objective-C
@property (nonatomic, readonly) NSUInteger count;
Swift
var count: UInt { get }
-
セクション内の指定されたインデックスのオブジェクトを返します。
宣言
Objective-C
- (nonnull RLMObjectType)objectAtIndexedSubscript:(NSUInteger)index;
Swift
subscript(index: UInt) -> RLMObjectType { get }
-
セクション内の指定されたインデックスのオブジェクトを返します。
宣言
Objective-C
- (nonnull RLMObjectType)objectAtIndex:(NSUInteger)index;
Swift
func object(at index: UInt) -> RLMObjectType
-
このセクションの固定(不変)スナップショットを返します。
固定されたコピーは、このセクションに現在含まれているデータと同じデータを含む不変のセクションですが、含まれている Realm に書込み (write) が行われた場合は更新されません。 ライブ配列と違い、固定されたコレクションには任意のスレッドからアクセスできます。
警告
このメソッドは、書込みトランザクション中、または 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
のドキュメントを参照してください。ブロックが呼び出される時点で、
RLMSection
オブジェクトは完全に評価され、最新の状態になります。通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。
RMResults
*results = [Dog allObjects] RLMSectionedResults *sectionedResults = [resultsectionedResultsUsingKeyPath:@"age" の昇順:返し] RLMSection *section =ectionedResults[ 0 ] // セクションは、" 5 " の犬がすでに存在します。 auto.token = [sectionaddNotificationBlock:^(RLMSection *section, RLMSectionedResultschange *changes) { // の例では 1 回だけ起動します: %z"、section.count)のみを使用します。 // => 2 }] は、 [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 (^)(RLMSection<RLMKeyType, RLMObjectType> *_Nonnull, RLMSectionedResultsChange *_Nonnull))block;
Swift
func addNotificationBlock(_ block: @escaping (RLMSection<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
戻り値
更新を配信する限り保持する必要があるトークン。
-
セクションが変更されるたびに呼び出されるブロックを登録します。
ブロックは最初のセクションでは非同期に呼び出され、結果内のいずれかのオブジェクトまたは結果内のどのオブジェクトを変更するかごとに、再度呼び出されます。
ブロックが初めて呼び出されるときに、
change
パラメータはnil
になります。 その後の呼び出しごとに、 セクション内のどの行が追加、削除、または変更されたかに関する情報が含まれます。 書込みトランザクションによって セクション内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。 変更が報告される方法と、UITableView
の更新例については、RLMSectionedResultsChange
のドキュメントを参照してください。ブロックが呼び出される時点で、
RLMSection
オブジェクトは完全に評価され、最新の状態になります。通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。
RMResults
*results = [Dog allObjects] RLMSectionedResults *sectionedResults = [resultsectionedResultsUsingKeyPath:@"age" の昇順:返し] RLMSection *section =ectionedResults[ 0 ] // セクションは、" 5 " の犬がすでに存在します。 auto.token = [sectionaddNotificationBlock:^(RLMSection *section, RLMSectionedResultschange *changes) { // の例では 1 回だけ起動します: %z"、section.count)のみを使用します。 // => 2 }] は、 [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 (^)(RLMSection<RLMKeyType, RLMObjectType> *_Nonnull, RLMSectionedResultsChange *_Nonnull))block queue:(nonnull dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping (RLMSection<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, queue: dispatch_queue_t) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
queue
通知を送信するシリアル キュー。
戻り値
更新を配信する限り保持する必要があるトークン。
-
セクションが変更されるたびに呼び出されるブロックを登録します。
ブロックは最初のセクションでは非同期に呼び出され、結果内のいずれかのオブジェクトまたは結果内のどのオブジェクトを変更するかごとに、再度呼び出されます。
ブロックが初めて呼び出されるときに、
change
パラメータはnil
になります。 その後の呼び出しごとに、 セクション内のどの行が追加、削除、または変更されたかに関する情報が含まれます。 書込みトランザクションによって セクション内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。 変更が報告される方法と、UITableView
の更新例については、RLMSectionedResultsChange
のドキュメントを参照してください。ブロックが呼び出される時点で、
RLMSection
オブジェクトは完全に評価され、最新の状態になります。通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。
RMResults
*results = [Dog allObjects] RLMSectionedResults *sectionedResults = [resultsectionedResultsUsingKeyPath:@"age" の昇順:返し] RLMSection *section =ectionedResults[ 0 ] // セクションは、" 5 " の犬がすでに存在します。 auto.token = [sectionaddNotificationBlock:^(RLMSection *section, RLMSectionedResultschange *changes) { // の例では 1 回だけ起動します: %z"、section.count)のみを使用します。 // => 2 }] は、 [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 (^)(RLMSection<RLMKeyType, RLMObjectType> *_Nonnull, RLMSectionedResultsChange *_Nonnull))block keyPaths:(nonnull NSArray<NSString *> *)keyPaths;
Swift
func addNotificationBlock(_ block: @escaping (RLMSection<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, keyPaths: [String]) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
keyPaths
これらのキーパスで発生した変更に対してブロックが呼び出されます。 キー パスが指定されていない場合、プロパティ キー パスごとに通知が配信されます。
戻り値
更新を配信する限り保持する必要があるトークン。
-
セクションが変更されるたびに呼び出されるブロックを登録します。
ブロックは最初のセクションでは非同期に呼び出され、結果内のいずれかのオブジェクトまたは結果内のどのオブジェクトを変更するかごとに、再度呼び出されます。
ブロックが初めて呼び出されるときに、
change
パラメータはnil
になります。 その後の呼び出しごとに、 セクション内のどの行が追加、削除、または変更されたかに関する情報が含まれます。 書込みトランザクションによって セクション内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。 変更が報告される方法と、UITableView
の更新例については、RLMSectionedResultsChange
のドキュメントを参照してください。ブロックが呼び出される時点で、
RLMSection
オブジェクトは完全に評価され、最新の状態になります。通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。
RMResults
*results = [Dog allObjects] RLMSectionedResults *sectionedResults = [resultsectionedResultsUsingKeyPath:@"age" の昇順:返し] RLMSection *section =ectionedResults[ 0 ] // セクションは、" 5 " の犬がすでに存在します。 auto.token = [sectionaddNotificationBlock:^(RLMSection *section, RLMSectionedResultschange *changes) { // の例では 1 回だけ起動します: %z"、section.count)のみを使用します。 // => 2 }] は、 [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 (^)(RLMSection<RLMKeyType, RLMObjectType> *_Nonnull, RLMSectionedResultsChange *_Nonnull))block keyPaths:(nullable NSArray<NSString *> *)keyPaths queue:(nullable dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping (RLMSection<RLMKeyType, RLMObjectType>, RLMSectionedResultsChange) -> Void, keyPaths: [String]?, queue: dispatch_queue_t?) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
keyPaths
これらのキーパスで発生した変更に対してブロックが呼び出されます。 キー パスが指定されていない場合、プロパティ キー パスごとに通知が配信されます。
queue
通知を送信するシリアル キュー。
戻り値
更新を配信する限り保持する必要があるトークン。