RM埋め込みオブジェクト
Objective-C
@interface RLMEmbeddedObject : RLMObjectBase <RLMThreadConfined>
Swift
@_nonSendable(_assumed) class RLMEmbeddedObject : RLMObjectBase, RLMThreadConfined
RLMEmbeddedObject
は、Realm モデル オブジェクトを定義するために使用される基本クラスです。
埋め込みオブジェクトは通常のオブジェクトと同様に機能しますが、単一の親オブジェクト(それ自体が埋め込まれる場合)によって所有されます。 通常の最上位オブジェクトとは異なり、埋め込みオブジェクトを で直接作成したり、Realm に追加したりすることはできません。 代わりに、親オブジェクトの一部として、または管理されていないオブジェクトを親オブジェクトの プロパティに割り当てた場合にのみ作成できます。 埋め込みオブジェクトは、親オブジェクトが削除されるか、RMObject プロパティを再割り当てするか、それを含む配列から埋め込みオブジェクトを削除することで、自動的に削除されます。
埋め込みオブジェクトには、それらにリンクする親オブジェクトが 1 つだけあるため、既存の管理対象オブジェクトにリンクしようとすると例外がスローされます。
RLMEmbeddedObject
でサポートされているプロパティ タイプはRLMObject
と同じですが、埋め込みオブジェクトが最上位オブジェクトにリンクできないため、 RLMObject
とRLMArray<RLMObject>
プロパティはサポートされていません( RLMEmbeddedObject
とRLMArray<RLMEmbeddedObject>
は)です。
埋め込みオブジェクトにはプライマリキーまたはインデックス付きプロパティを含めることはできません。
-
Realm オブジェクトの非マネージド インスタンスを作成します。
管理されていない埋め込みオブジェクトは、管理対象の Realm オブジェクトのオブジェクト プロパティに割り当てるか、管理対象の RRMArray に追加することで Realm に追加できます。
宣言
Objective-C
- (nonnull instancetype)init;
Swift
init()
-
Realm オブジェクトの非マネージド インスタンスを作成します。
NSArray
またはNSDictionary
インスタンスで を渡し、オブジェクトのプロパティの値を設定します。管理されていない埋め込みオブジェクトは、管理対象の Realm オブジェクトのオブジェクト プロパティに割り当てるか、管理対象の RRMArray に追加することで Realm に追加できます。
宣言
Objective-C
- (nonnull instancetype)initWithValue:(nonnull id)value;
Swift
convenience init(value: Any)
-
Realm オブジェクト サブクラスのクラス名を返します。
警告
を上書きしないでください。 Realm は、正確なクラス名を返すこのメソッドに依存します。
宣言
Objective-C
+ (nonnull NSString *)className;
Swift
class func className() -> String
戻り値
モデル クラスのクラス名。
-
オブジェクトの管理対象プロパティを一覧表示するオブジェクト スキーマ。
宣言
Objective-C
@property (nonatomic, readonly) RLMObjectSchema *_Nonnull objectSchema;
Swift
var objectSchema: RLMObjectSchema { get }
-
オブジェクトが無効になったためアクセスできなくなっているかどうかを示します。
オブジェクトを管理する Realm からオブジェクトが削除された場合、またはその Realm で
invalidate
が呼び出された場合は、オブジェクトにアクセスできなくなります。宣言
Objective-C
@property (nonatomic, readonly, getter=isInvalidated) BOOL invalidated;
Swift
var isInvalidated: Bool { get }
-
このオブジェクトが固定されているかどうかを示します。
詳細は、次を参照してください:
-[RLMEmbeddedObject freeze]
宣言
Objective-C
@property (nonatomic, readonly, getter=isFrozen) BOOL frozen;
Swift
var isFrozen: Bool { get }
-
このメソッドをオーバーライドして、各プロパティに使用するデフォルト値を指定します。
宣言
Objective-C
+ (nullable NSDictionary *)defaultPropertyValues;
Swift
class func defaultPropertyValues() -> [AnyHashable : Any]?
戻り値
プロパティ名をデフォルト値にマッピングする辞書。
-
このメソッドをオーバーライドして、無視するプロパティの名前を指定します。 これらのプロパティは、オブジェクトを管理する Realm によって管理されません。
宣言
Objective-C
+ (nullable NSArray<NSString *> *)ignoredProperties;
Swift
class func ignoredProperties() -> [String]?
戻り値
無視するプロパティ名の配列。
-
このメソッドをオーバーライドして、任意以外のプロパティの名前( に
nil
値を割り当てることはできません)。デフォルトでは、値を
nil
に設定できる型のすべてのプロパティは任意プロパティと見なされます。 Realm 内のオブジェクトが常にプロパティにnil
以外の値を保存するよう要求するには、このメソッドから返される配列にプロパティの名前を追加します。RLMEmbeddedObject
型のプロパティは任意以外にすることはできません。 配列プロパティとNSNumber
プロパティは非任意にすることができますが、そうする理由はありません。配列は nil の保存をサポートしていないため、任意以外の数が必要な場合は、代わりに プリミティブ 型を使用する必要があります。宣言
Objective-C
+ (nonnull NSArray<NSString *> *)requiredProperties;
Swift
class func requiredProperties() -> [String]
戻り値
必須 プロパティ名の配列。
-
このメソッドをオーバーライドして、リンク オブジェクトを含むプロパティに関連する情報を提供します。
RLMLinkingObjects
型の各プロパティには、このメソッドによって返される辞書内にプロパティ名で構成されるキーが必要です。 対応する値は、プロパティがリンクされるクラスとプロパティを記述するRLMPropertyDescriptor
のインスタンスである必要があります。return @{ @"owners": [RLMPropertyDescriptor descriptorWithClass:Owner.class propertyName:@"dogs"] };
宣言
Objective-C
+ (nonnull NSDictionary<NSString *, RLMPropertyDescriptor *> *) linkingObjectsProperties;
Swift
class func linkingObjectsProperties() -> [String : RLMPropertyDescriptor]
戻り値
プロパティ名を
RLMPropertyDescriptor
インスタンスにマッピングする辞書。
-
オブジェクトが変更されるたびに呼び出されるブロックを登録します。
ブロックは、オブジェクトを削除する、またはプロパティを既存の値に設定する自己割り当てを含む、オブジェクトの管理されているプロパティのいずれかを変更する各書込みトランザクションの後に非同期に呼び出されます。
異なるスレッドや異なるプロセスで実行される書込みトランザクション (write transaction) では、管理 Realm が 変更を含むバージョンに(自動)更新されたときにブロックが呼び出されますが、ローカル書込みトランザクション(write transaction)では、将来のある時点で呼び出されます書込みトランザクション (write transaction) がコミットされた場合。
通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。
RLMArray
やRLMResults
とは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。この方法では、Realm によって管理されているオブジェクトのみを監視できます。 アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
-invalidate
を呼び出します。コールバック ブロック内で監視対象オブジェクトへの強力な参照をキャプチャしても安全です。 コールバックはオブジェクト自体ではなく返されたトークンによって保持されるため、保持サイクルがありません。
警告
このメソッドは、書込みトランザクション (write transaction) 中に、含まれている Realm が読み取り専用の場合、または管理されていないオブジェクト上の場合、呼び出すことができません。
宣言
Objective-C
- (nonnull RLMNotificationToken *)addNotificationBlock: (nonnull RLMObjectChangeBlock)block;
Swift
func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
戻り値
更新を配信する限り保持する必要があるトークン。
-
オブジェクトが変更されるたびに呼び出されるブロックを登録します。
ブロックは、オブジェクトを削除する、またはプロパティを既存の値に設定する自己割り当てを含む、オブジェクトの管理されているプロパティのいずれかを変更する各書込みトランザクションの後に非同期に呼び出されます。
異なるスレッドまたは異なるプロセスで実行される書込みトランザクションの場合、ブロックは管理 Realm が変更を含むバージョンに(自動)更新されたときに呼び出されますが、ローカルの書込みトランザクションでは、将来のある時点で呼び出されます書込みトランザクション (write transaction) がコミットされた場合。
通知は指定されたキューに配信されます。 キューがブロックされ、通知がすぐに配信されない場合は、複数の通知が 1 つの通知に統合されます。
RLMArray
やRLMResults
とは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。この方法では、Realm によって管理されているオブジェクトのみを監視できます。 アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
-invalidate
を呼び出します。コールバック ブロック内で監視対象オブジェクトへの強力な参照をキャプチャしても安全です。 コールバックはオブジェクト自体ではなく返されたトークンによって保持されるため、保持サイクルがありません。
警告
このメソッドは、書込みトランザクション (write transaction) 中に、含まれている Realm が読み取り専用の場合、または管理されていないオブジェクト上の場合、呼び出すことができません。警告
キューはシリアル キューである必要があります。
宣言
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock:(nonnull RLMObjectChangeBlock)block queue:(nonnull dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, queue: dispatch_queue_t) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
queue
通知を送信するシリアル キュー。
戻り値
更新を配信する限り保持する必要があるトークン。
-
オブジェクトが変更されるたびに呼び出されるブロックを登録します。
ブロックは、オブジェクトを削除する、またはプロパティを既存の値に設定する自己割り当てを含む、オブジェクトの管理されているプロパティのいずれかを変更する各書込みトランザクションの後に非同期に呼び出されます。
異なるスレッドまたは異なるプロセスで実行される書込みトランザクションの場合、ブロックは管理 Realm が変更を含むバージョンに(自動)更新されたときに呼び出されますが、ローカルの書込みトランザクションでは、将来のある時点で呼び出されます書込みトランザクション (write transaction) がコミットされた場合。
通知は指定されたキューに配信されます。 キューがブロックされ、通知がすぐに配信されない場合は、複数の通知が 1 つの通知に統合されます。
RLMArray
やRLMResults
とは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。この方法では、Realm によって管理されているオブジェクトのみを監視できます。 アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
-invalidate
を呼び出します。コールバック ブロック内で監視対象オブジェクトへの強力な参照をキャプチャしても安全です。 コールバックはオブジェクト自体ではなく返されたトークンによって保持されるため、保持サイクルがありません。
警告
このメソッドは、書込みトランザクション (write transaction) 中に、含まれている Realm が読み取り専用の場合、または管理されていないオブジェクト上の場合、呼び出すことができません。警告
キューはシリアル キューである必要があります。
宣言
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock:(nonnull RLMObjectChangeBlock)block keyPaths:(nonnull NSArray<NSString *> *)keyPaths queue:(nonnull dispatch_queue_t)queue;
Swift
func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, keyPaths: [String], queue: dispatch_queue_t) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
keyPaths
これらのキーパスで発生した変更に対してブロックが呼び出されます。 キー パスが指定されていない場合、プロパティ キー パスごとに通知が配信されます。
queue
通知を送信するシリアル キュー。
戻り値
更新を配信する限り保持する必要があるトークン。
-
オブジェクトが変更されるたびに呼び出されるブロックを登録します。
ブロックは、オブジェクトを削除する、またはプロパティを既存の値に設定する自己割り当てを含む、オブジェクトの管理されているプロパティのいずれかを変更する各書込みトランザクションの後に非同期に呼び出されます。
異なるスレッドまたは異なるプロセスで実行される書込みトランザクションの場合、ブロックは管理 Realm が変更を含むバージョンに(自動)更新されたときに呼び出されますが、ローカルの書込みトランザクションでは、将来のある時点で呼び出されます書込みトランザクション (write transaction) がコミットされた場合。
通知は指定されたキューに配信されます。 キューがブロックされ、通知がすぐに配信されない場合は、複数の通知が 1 つの通知に統合されます。
RLMArray
やRLMResults
とは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。この方法では、Realm によって管理されているオブジェクトのみを監視できます。 アップデートをブロックに送信する場合は、返されたトークンを保持する必要があります。 更新の受信を停止するには、トークンで
-invalidate
を呼び出します。コールバック ブロック内で監視対象オブジェクトへの強力な参照をキャプチャしても安全です。 コールバックはオブジェクト自体ではなく返されたトークンによって保持されるため、保持サイクルがありません。
警告
このメソッドは、書込みトランザクション (write transaction) 中に、含まれている Realm が読み取り専用の場合、または管理されていないオブジェクト上の場合、呼び出すことができません。警告
キューはシリアル キューである必要があります。
宣言
Objective-C
- (nonnull RLMNotificationToken *) addNotificationBlock:(nonnull RLMObjectChangeBlock)block keyPaths:(nonnull NSArray<NSString *> *)keyPaths;
Swift
func addNotificationBlock(_ block: @escaping RLMObjectChangeBlock, keyPaths: [String]) -> RLMNotificationToken
パラメーター
block
変更が発生するたびに呼び出されるブロック。
keyPaths
これらのキーパスで発生した変更に対してブロックが呼び出されます。 キー パスが指定されていない場合、プロパティ キー パスごとに通知が配信されます。
戻り値
更新を配信する限り保持する必要があるトークン。
-
別の Realm オブジェクト インスタンスがレシーバーを管理する Realm でレシーバーと同じオブジェクトを指す場合は はいを返します。
プライマリキーを持つ固定オブジェクトとオブジェクトタイプの場合、
isEqual:
はこのメソッドと同じロジック(hash
の対応する実装とともに)を使用するようにオーバーライドされます。 プライマリキーのない停止していないオブジェクトは、isEqual:
とhash
のポインター ID を使用します。宣言
Objective-C
- (BOOL)isEqualToObject:(nonnull RLMEmbeddedObject *)object;
Swift
func isEqual(to object: RLMEmbeddedObject) -> Bool
パラメーター
object
レシーバーを比較するオブジェクト。
戻り値
オブジェクトがレシーバーと同じオブジェクトを表すかどうか。
-
このオブジェクトの固定(不変)スナップショットを返します。
固定されたコピーは、このオブジェクトが現在含まれているデータと同じデータを含む不変のオブジェクトですが、含まれている Realm に書込み (write) が行われた場合は更新されません。 ライブオブジェクトと違い、固定オブジェクトには任意のスレッドからアクセスできます。
警告
Realm で書込みトランザクションを実行中に固定されたオブジェクトを長時間保持すると、Realm ファイルのサイズが大きくなる可能性があります。 詳しくは、Realm.Configuration.maximumNumberOfActiveVersions
を参照してください。警告
このメソッドは、管理対象のオブジェクトでのみ呼び出せます。宣言
Objective-C
- (nonnull instancetype)freeze;
Swift
func freeze() -> Self
-
このオブジェクトのライブ(可変)参照を返します。
このメソッドでは、同じ固定オブジェクトのライブ コピーへの管理対象アアクセス権が作成されます。 すでに存在するオブジェクトで呼び出される場合は、自分自身を返します。
宣言
Objective-C
- (nonnull instancetype)thaw;
Swift
func thaw() -> Self