RM埋め込みオブジェクト

Objective-C

@interface RLMEmbeddedObject : RLMObjectBase <RLMThreadConfined>

Swift

@_nonSendable(_assumed) class RLMEmbeddedObject : RLMObjectBase, RLMThreadConfined

RLMEmbeddedObject は、Realm モデル オブジェクトを定義するために使用される基本クラスです。

埋め込みオブジェクトは通常のオブジェクトと同様に機能しますが、単一の親オブジェクト(それ自体が埋め込まれる場合)によって所有されます。 通常の最上位オブジェクトとは異なり、埋め込みオブジェクトを で直接作成したり、Realm に追加したりすることはできません。 代わりに、親オブジェクトの一部として、または管理されていないオブジェクトを親オブジェクトの プロパティに割り当てた場合にのみ作成できます。 埋め込みオブジェクトは、親オブジェクトが削除されるか、RMObject プロパティを再割り当てするか、それを含む配列から埋め込みオブジェクトを削除することで、自動的に削除されます。

埋め込みオブジェクトには、それらにリンクする親オブジェクトが 1 つだけあるため、既存の管理対象オブジェクトにリンクしようとすると例外がスローされます。

RLMEmbeddedObjectでサポートされているプロパティ タイプはRLMObjectと同じですが、埋め込みオブジェクトが最上位オブジェクトにリンクできないため、 RLMObjectRLMArray<RLMObject>プロパティはサポートされていません( RLMEmbeddedObjectRLMArray<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

    戻り値

    モデル クラスのクラス名。

プロパティ

  • オブジェクトを管理する Realm。オブジェクトが管理されていない場合はnil

    宣言

    Objective-C

    @property (nonatomic, readonly, nullable) RLMRealm *realm;

    Swift

    var realm: RLMRealm? { get }
  • オブジェクトの管理対象プロパティを一覧表示するオブジェクト スキーマ。

    宣言

    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インスタンスにマッピングする辞書。

notifications

  • オブジェクトが変更されるたびに呼び出されるブロックを登録します。

    ブロックは、オブジェクトを削除する、またはプロパティを既存の値に設定する自己割り当てを含む、オブジェクトの管理されているプロパティのいずれかを変更する各書込みトランザクションの後に非同期に呼び出されます。

    異なるスレッドや異なるプロセスで実行される書込みトランザクション (write transaction) では、管理 Realm が 変更を含むバージョンに(自動)更新されたときにブロックが呼び出されますが、ローカル書込みトランザクション(write transaction)では、将来のある時点で呼び出されます書込みトランザクション (write transaction) がコミットされた場合。

    通知は標準の実行ループ経由で配信されるため、実行ループが他のアクティビティによってブロックされている間は配信されません。 通知をすぐに配信できない場合は、複数の通知が 1 つの通知に統合されることがあります。

    RLMArrayRLMResultsとは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。

    この方法では、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 つの通知に統合されます。

    RLMArrayRLMResultsとは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。

    この方法では、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 つの通知に統合されます。

    RLMArrayRLMResultsとは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。

    この方法では、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 つの通知に統合されます。

    RLMArrayRLMResultsとは異なり、新しい通知ブロックを追加した後に実行される初期コールバックはありません。

    この方法では、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