RRMDictionary
Objective-C
@interface RLMDictionary<RLMKeyType, RLMObjectType> : NSObject <RLMCollection>
Swift
@_nonSendable(_assumed) class RLMDictionary<RLMKeyType, RLMObjectType> : NSObject, RLMCollection where RLMKeyType : AnyObject, RLMObjectType : AnyObject
RLMDictionary
は、キーと値のペアの動的コレクションを表す Realm のコンテナ タイプです。
NSDictionary
と違い、 RLMDictionary
は単一のキーと値の型を保持します。 これは、これらのDocsでは、辞書の「type」と「keyType」として参照されています。
RLMDictionary
プロパティを宣言する場合、オブジェクトタイプと keyType は、含めるオブジェクトと同じ名前のプロトコルに準拠しているものとしてマークする必要があります。
RLM_COLLECTION_TYPE(ObjectType)
...
@property RLMDictionary<NSString *, ObjectType *><RLMString, ObjectType> *objectTypeDictionary;
RLMDictionary
は、 RLMObject
およびRLMResult
と同じ述語でクエリできます。
RLMDictionary
を直接作成することはできません。 RLMDictionary
RLMObject
の プロパティはアクセス時に遅延して作成されるか、Realm をクエリすることで取得できます。
RLMDictionary
はキーとしてNSString
のみをサポートします。 Realm では、辞書キー内で.
または$
文字の使用が禁止されています。
キー値の観察
RLMDictionary
は、 RLMObject
サブクラスのRLMDictionary
プロパティで辞書キー値の監視をサポートしており、 RLMDictionary
インスタンスのinvalidated
プロパティ自体は、 RLMDictionary
が管理対象のRLMObject
に接続されている場合にキー値の監視に準拠しています( RLMDictionary
管理されていないRLMObject
上のは無効化されません)。
-
辞書内のエントリの数。
宣言
Objective-C
@property (nonatomic, readonly) NSUInteger count;
Swift
var count: UInt { get }
-
辞書内のオブジェクトの型。
宣言
Objective-C
@property (nonatomic, readonly) RLMPropertyType type;
Swift
var type: RLMPropertyType { get }
-
この辞書で使用されるキーの型。
宣言
Objective-C
@property (nonatomic, readonly) RLMPropertyType keyType;
Swift
var keyType: RLMPropertyType { get }
-
コレクション内のオブジェクトが
nil
になるかどうかを示します。宣言
Objective-C
@property (nonatomic, readonly, getter=isOptional) BOOL optional;
Swift
var isOptional: Bool { get }
-
辞書に含まれるオブジェクトのクラス名。
type
が RMPropertyTypeObject でない場合は、nil
になります。宣言
Objective-C
@property (nonatomic, copy, readonly, nullable) NSString *objectClassName;
Swift
var objectClassName: String? { get }
-
辞書がアクセスできなくなっているかどうかを示します。
宣言
Objective-C
@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated;
Swift
var isInvalidated: Bool { get }
-
辞書が固定されているかどうかを示します。
凍結された辞書は不変で、どのスレッドからでもアクセスできます。 凍結された辞書は、管理対象のライブ辞書で
-freeze
を呼び出すことで作成されます。 管理されていない辞書は固定されません。宣言
Objective-C
@property (nonatomic, readonly, getter=isFrozen) BOOL frozen;
Swift
var isFrozen: Bool { get }
-
指定されたキーに関連付けられた値を返します。
@ Atlas キーが @ で開始されない場合、 はオブジェクト(forKey:)を呼び出します。 キーが "@" で始まる場合、 は "@" を削除し、キーの残りの部分で [スーパー値ForKey:] を呼び出します。
宣言
Objective-C
- (nullable id)valueForKey:(nonnull RLMKeyType)key;
Swift
func value(forKey key: RLMKeyType) -> Any?
パラメーター
key
プロパティの名前。
戻り値
特定のキーまたは
nil
に関連付けられた値。 -
辞書のキーを含む配列を返します。
注意
配列内の要素の順序は定義されていません。宣言
Objective-C
@property (copy, readonly) NSArray<RLMKeyType> *_Nonnull allKeys;
Swift
var allKeys: [RLMKeyType] { get }
-
辞書の 値を含む配列を返します。
注意
配列内の要素の順序は定義されていません。宣言
Objective-C
@property (copy, readonly) NSArray<RLMObjectType> *_Nonnull allValues;
Swift
var allValues: [RLMObjectType] { get }
-
指定されたキーに関連付けられた値を返します。
注意
nil
特定のキーに関連付けられている値がない場合は、 が返されます。 null がキーに関連付けられている場合は、NSNull が返されます。宣言
Objective-C
- (nullable RLMObjectType)objectForKey:(nonnull RLMKeyType)key;
Swift
func object(forKey key: RLMKeyType) -> RLMObjectType?
パラメーター
key
対応する値を返すキー。
戻り値
キーに関連付けられた値。
-
指定されたキーに関連付けられた値を返します。
注意
nil
特定のキーに関連付けられている値がない場合は、 が返されます。 null がキーに関連付けられている場合は、NSNull が返されます。宣言
Objective-C
- (nullable RLMObjectType)objectForKeyedSubscript:(nonnull RLMKeyType)key;
Swift
subscript(key: RLMKeyType) -> RLMObjectType? { get set }
パラメーター
key
対応する値を返すキー。
戻り値
キーに関連付けられた値。
-
指定されたブロック オブジェクトを、辞書の各キーと値のペアに適用します。
注意
ブロックが *stop を はいに設定すると、列挙が停止します。
宣言
Objective-C
- (void)enumerateKeysAndObjectsUsingBlock: (nonnull void (^)(RLMKeyType _Nonnull, RLMObjectType _Nonnull, BOOL *_Nonnull))block;
Swift
func enumerateKeysAndObjects(_ block: @escaping (RLMKeyType, RLMObjectType, UnsafeMutablePointer<ObjCBool>) -> Void)
パラメーター
block
辞書内のエントリに対して操作を実行するブロック オブジェクト。
-
辞書の内容を別の辞書(NSDictionary または RVMDictionary)の内容に置き換えます。
これにより、この辞書内のすべての要素が削除され、指定された辞書の各要素が適用されます。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。警告
extraDictionary が自己の場合、これは空の辞書になります。宣言
Objective-C
- (void)setDictionary:(nonnull id)otherDictionary;
Swift
func setDictionary(_ otherDictionary: Any)
-
辞書内のすべてのコンテンツを削除します。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Objective-C
- (void)removeAllObjects;
Swift
func removeAllObjects()
-
指定された配列内の要素によって指定された辞書エントリから削除します。 特定のキーが存在しない場合、そのキーに対してミューテーションは行われません。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Objective-C
- (void)removeObjectsForKeys:(nonnull NSArray<RLMKeyType> *)keyArray;
Swift
func removeObjects(forKeys keyArray: [RLMKeyType])
-
特定のキーとそれに関連付けられた値を辞書から削除します。 キーが存在しない場合、辞書は変更されません。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Objective-C
- (void)removeObjectForKey:(nonnull RLMKeyType)key;
Swift
func removeObject(forKey key: RLMKeyType)
-
キーが存在しない場合は指定されたキーと値のペアを辞書に追加し、キーがすでに存在する場合は指定されたキーの値を更新します。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Objective-C
- (void)setObject:(nullable RLMObjectType)obj forKeyedSubscript:(nonnull RLMKeyType)key;
-
キーが存在しない場合は指定されたキーと値のペアを辞書に追加し、キーがすでに存在する場合は指定されたキーの値を更新します。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Objective-C
- (void)setObject:(nullable RLMObjectType)anObject forKey:(nonnull RLMKeyType)aKey;
Swift
func setObject(_ anObject: RLMObjectType?, forKey aKey: RLMKeyType)
-
別の辞書のエントリを受信辞書に追加します。
注意
受信側の辞書に OtherDictionary と同じキーが含まれている場合、受信側の辞書は一致するキーの各キーと値のペアを更新します。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
宣言
Objective-C
- (void)addEntriesFromDictionary:(nonnull id<NSFastEnumeration>)otherDictionary;
Swift
func addEntries(fromDictionary otherDictionary: any NSFastEnumeration)
パラメーター
otherDictionary
受信辞書と同じ型のオブジェクトを含む、
NSDictionary
やRLMDictionary
などの列挙可能なオブジェクト。
-
辞書内の指定された述語に一致するすべての値を返します。
注意
辞書内のキーは値をクエリするときに無視され、
RLMResults
では返されません。宣言
Objective-C
- (nonnull RLMResults<RLMObjectType> *)objectsWhere: (nonnull NSString *)predicateFormat, ...;
パラメーター
predicateFormat
述語形式の string 。オプションで、その後に変数の数の引数が続きます。
戻り値
指定された述語に一致するオブジェクトの
RLMResults
。 -
辞書内の指定された述語に一致するすべての値を返します。
注意
辞書内のキーは値をクエリするときに無視され、
RLMResults
では返されません。宣言
Objective-C
- (nonnull RLMResults<RLMObjectType> *)objectsWithPredicate: (nonnull NSPredicate *)predicate;
Swift
func objects(with predicate: NSPredicate) -> RLMResults
パラメーター
predicate
オブジェクトをフィルタリングする述語。
戻り値
指定された述語に一致するオブジェクトの
RLMResults
-
辞書内のすべての値のソートされた RMResult を返します。
注意
値をソートするときは、辞書内のキーは無視され、
RLMResults
では返されません。宣言
Objective-C
- (nonnull RLMResults<RLMObjectType> *) sortedResultsUsingKeyPath:(nonnull NSString *)keyPath ascending:(BOOL)ascending;
Swift
func sortedResults(usingKeyPath keyPath: String, ascending: Bool) -> RLMResults
パラメーター
keyPath
ソートするキー パス。
ascending
並べ替える方向。
戻り値
指定されたキー パスでソートされた
RLMResults
。 -
辞書内のすべての値のソートされた RMResult を返します。
注意
値をソートするときは、辞書内のキーは無視され、
RLMResults
では返されません。宣言
Objective-C
- (nonnull RLMResults<RLMObjectType> *)sortedResultsUsingDescriptors: (nonnull NSArray<RLMSortDescriptor *> *)properties;
Swift
func sortedResults(using properties: [RLMSortDescriptor]) -> RLMResults
パラメーター
properties
並べ替え対象の
RLMSortDescriptor
の配列。戻り値
指定されたプロパティでソートされた
RLMResults
。 -
辞書内のすべての値から個別の
RLMResults
を返します。注意
辞書内のキーは無視され、
RLMResults
では返されません。宣言
Objective-C
- (nonnull RLMResults<RLMObjectType> *)distinctResultsUsingKeyPaths: (nonnull NSArray<NSString *> *)keyPaths;
Swift
func distinctResults(usingKeyPaths keyPaths: [String]) -> RLMResults
パラメーター
keyPaths
で個別のキー パス。
戻り値
キーパスの個別の値を持つ
RLMResults
。
-
辞書内のすべての値の中で指定されたプロパティの最小(最小)値を返します。
NSNumber *min = [object.dictionaryProperty minOfProperty:@"age"];
宣言
Objective-C
- (nullable id)minOfProperty:(nonnull NSString *)property;
Swift
func min(ofProperty property: String) -> Any?
パラメーター
property
最小値が必要なプロパティ。 サポートされているタイプは、
int
、float
、double
、NSDate
、RLMValue
、RLMDecimal128
のプロパティのみです。戻り値
プロパティの最小値、または辞書が空の場合は
nil
。 -
辞書内のすべてのオブジェクトの中で指定されたプロパティの最大(最高)値を返します。
NSNumber *max = [object.dictionaryProperty maxOfProperty:@"age"];
宣言
Objective-C
- (nullable id)maxOfProperty:(nonnull NSString *)property;
Swift
func max(ofProperty property: String) -> Any?
パラメーター
property
最小値が必要なプロパティ。 サポートされているタイプは、
int
、float
、double
、NSDate
、RLMValue
、RLMDecimal128
のプロパティのみです。戻り値
プロパティの最大値、または辞書が空の場合は
nil
。 -
辞書内のすべてのオブジェクトにわたる指定されたプロパティの個別の値の合計を返します。
NSNumber *sum = [object.dictionaryProperty sumOfProperty:@"age"];
宣言
Objective-C
- (nonnull NSNumber *)sumOfProperty:(nonnull NSString *)property;
Swift
func sum(ofProperty property: String) -> NSNumber
パラメーター
property
最小値が必要なプロパティ。 サポートされているタイプは、
int
、float
、double
、RLMValue
、RLMDecimal128
のプロパティのみです。戻り値
指定された プロパティの合計。
-
辞書内のオブジェクトに対する指定されたプロパティの平均値を返します。
NSNumber *average = [object.dictionaryProperty averageOfProperty:@"age"];
宣言
Objective-C
- (nullable NSNumber *)averageOfProperty:(nonnull NSString *)property;
Swift
func average(ofProperty property: String) -> NSNumber?
パラメーター
property
最小値が必要なプロパティ。 サポートされているタイプは、
int
、float
、double
、NSDate
、RLMValue
、RLMDecimal128
のプロパティのみです。戻り値
特定のプロパティの平均値。または、辞書が空の場合は
nil
。
-
辞書が変更されるたびに呼び出されるブロックを登録します。
ブロックは最初の辞書とは非同期に呼び出され、辞書内のキーまたは値のいずれかを変更する書き込みトランザクションごとに再度呼び出されます。
ブロックが初めて呼び出されるときに、
changes
パラメータはnil
になります。 その後の呼び出しごとに、辞書内のどのキーが追加、変更、または削除されたかについての情報が含まれます。 書込みトランザクションによって辞書内のキーも値も変更されなかった場合、ブロックはまったく呼び出されません。エラー パラメータは下位互換性のためだけに存在し、常に
nil
になります。通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。 これには初期結果を持つ通知を含めることができます。 たとえば、次のコードは通知ブロックを追加した後すぐに書込みトランザクションを実行するため、最初の通知が最初に配信される可能性はありません。 その結果、最初の通知には、書込みトランザクション後の Realm の状態が反映されます。
Person *person = [[Person allObjectsInRealm:realm] firstObject]; NSLog(@"person.dogs.count: %zu", person.dogs.count); // => 0 self.token = [person.dogs addNotificationBlock(RLMDictionary<NSString *, Dog *><RLMString, Dog> *dogs, RLMDictionaryChange *changes, NSError *error) { // Only fired once for the example NSLog(@"dogs.count: %zu", dogs.count); // => 1 }]; [realm transactionWithBlock:^{ Dog *dog = [[Dog alloc] init]; dog.name = @"Rex"; person.dogs[@"frenchBulldog"] = dog; }]; // end of run loop execution context
アップデートを ブロックに引き続き送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
-invalidate
を呼び出します。警告
このメソッドは、書込みトランザクション中、または Realm を含む が読み取り専用の場合に呼び出すことができません。警告
このメソッドは、凍結されていない管理対象辞書でのみ呼び出せます。
宣言
Objective-C
- (nonnull RLMNotificationToken *)addNotificationBlock: (nonnull void (^)(RLMDictionary<RLMKeyType, RLMObjectType> *_Nullable, RLMDictionaryChange *_Nullable, NSError *_Nullable))block;
Swift
func addNotificationBlock(_ block: @escaping (RLMDictionary<RLMKeyType, RLMObjectType>?, RLMDictionaryChange?, (any Error)?) -> Void) -> RLMNotificationToken
パラメーター
block
辞書が変更されるたびに呼び出されるブロック。
戻り値
更新を配信する限り保持する必要があるトークン。
-
辞書が変更されるたびに呼び出されるブロックを登録します。
ブロックは最初の辞書とは非同期に呼び出され、辞書内のキー値または結果内のオブジェクトが変更されるたびに、再度呼び出されます。
ブロックが初めて呼び出されるときに、
changes
パラメータはnil
になります。 その後の呼び出しごとに、辞書内のどのキーが追加または変更されたかについての情報が含まれます。 書込みトランザクションによって辞書内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。エラー パラメータは下位互換性のためだけに存在し、常に
nil
になります。通知は指定されたキューに配信されます。 キューがブロックされ、通知がすぐに配信されない場合は、複数の通知が 1 つの通知に統合されます。
アップデートを ブロックに引き続き送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
-invalidate
を呼び出します。警告
このメソッドは、Realm を含む が読み取り専用または固定されている場合、呼び出すことができません。警告
キューはシリアル キューである必要があります。
宣言
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock: (nonnull void (^)(RLMDictionary<RLMKeyType, RLMObjectType> *_Nullable, RLMDictionaryChange *_Nullable, NSError *_Nullable))block queue:(nullable dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping (RLMDictionary<RLMKeyType, RLMObjectType>?, RLMDictionaryChange?, (any Error)?) -> Void, queue: dispatch_queue_t?) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
queue
通知を送信するシリアル キュー。
戻り値
更新を配信する限り保持する必要があるトークン。
-
辞書が変更されるたびに呼び出されるブロックを登録します。
ブロックは最初の辞書とは非同期に呼び出され、辞書内のキー値または結果内のオブジェクトが変更されるたびに、再度呼び出されます。
ブロックが初めて呼び出されるときに、
changes
パラメータはnil
になります。 その後の呼び出しごとに、辞書内のどのキーが追加または変更されたかについての情報が含まれます。 書込みトランザクションによって辞書内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。エラー パラメータは下位互換性のためだけに存在し、常に
nil
になります。通知は指定されたキューに配信されます。 キューがブロックされ、通知がすぐに配信されない場合は、複数の通知が 1 つの通知に統合されます。
アップデートを ブロックに引き続き送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
-invalidate
を呼び出します。警告
このメソッドは、Realm を含む が読み取り専用または固定されている場合、呼び出すことができません。警告
キューはシリアル キューである必要があります。
宣言
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock: (nonnull void (^)(RLMDictionary<RLMKeyType, RLMObjectType> *_Nullable, RLMDictionaryChange *_Nullable, NSError *_Nullable))block keyPaths:(nullable NSArray<NSString *> *)keyPaths queue:(nullable dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping (RLMDictionary<RLMKeyType, RLMObjectType>?, RLMDictionaryChange?, (any Error)?) -> Void, keyPaths: [String]?, queue: dispatch_queue_t?) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
keyPaths
これらのキーパスで発生した変更に対してブロックが呼び出されます。 キー パスが指定されていない場合、プロパティ キー パスごとに通知が配信されます。
戻り値
更新を配信する限り保持する必要があるトークン。
-
辞書が変更されるたびに呼び出されるブロックを登録します。
ブロックは最初の辞書とは非同期に呼び出され、辞書内のキー値または結果内のオブジェクトが変更されるたびに、再度呼び出されます。
ブロックが初めて呼び出されるときに、
changes
パラメータはnil
になります。 その後の呼び出しごとに、辞書内のどのキーが追加または変更されたかについての情報が含まれます。 書込みトランザクションによって辞書内のオブジェクトが変更されなかった場合、ブロックはまったく呼び出されません。エラー パラメータは下位互換性のためだけに存在し、常に
nil
になります。アップデートを ブロックに引き続き送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
-invalidate
を呼び出します。警告
このメソッドは、Realm を含む が読み取り専用または固定されている場合、呼び出すことができません。警告
キューはシリアル キューである必要があります。
宣言
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock: (nonnull void (^)(RLMDictionary<RLMKeyType, RLMObjectType> *_Nullable, RLMDictionaryChange *_Nullable, NSError *_Nullable))block keyPaths:(nullable NSArray<NSString *> *)keyPaths;
Swift
func addNotificationBlock(_ block: @escaping (RLMDictionary<RLMKeyType, RLMObjectType>?, RLMDictionaryChange?, (any Error)?) -> Void, keyPaths: [String]?) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
keyPaths
これらのキーパスで発生した変更に対してブロックが呼び出されます。 キー パスが指定されていない場合、プロパティ キー パスごとに通知が配信されます。
戻り値
更新を配信する限り保持する必要があるトークン。
-
辞書の固定(不変)スナップショットを返します。
固定されたコピーは、この辞書に現在含まれているデータと同じデータを含む不変の辞書ですが、含まれている 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
-
なし
RVMDictionary は直接作成できません
-[RLMDictionary init]
は、RLMDictionary
を直接作成できないため、利用できません。RLMDictionary
RLMObject
上の プロパティは、アクセス時に遅延作成されます。宣言
Objective-C
- (nonnull instancetype)init;
-
なし
RVMDictionary は直接作成できません
+[RLMDictionary new]
は、RLMDictionary
を直接作成できないため、利用できません。RLMDictionary
RLMObject
上の プロパティは、アクセス時に遅延作成されます。宣言
Objective-C
+ (nonnull instancetype)new;