RMObject

Objective-C

@interface RLMObject : RLMObjectBase <RLMThreadConfined>

Swift

@_nonSendable(_assumed) class RLMObject : RLMObjectBase, RLMThreadConfined

RLMObject は、Realm に保存されたデータを表すモデル オブジェクトの基本クラスです。

RLMObjectをサブクラス化し、管理するプロパティを追加してモデルクラスを定義します。 次に、 RLMObjectクラスを直接使用する代わりに、カスタム サブクラスをインスタンス化して使用します。

// Dog.h
@interface Dog : RLMObject
@property NSString *name;
@property BOOL      adopted;
@end

// Dog.m
@implementation Dog
@end //none needed

サポートされているプロパティの型

  • NSString
  • NSIntegerintlongfloatdouble
  • BOOL or bool
  • NSDate
  • NSData
  • NSNumber<X>Xは、任意の数値プロパティの場合、 RLMIntRLMFloatRLMDouble 、またはRLMBoolのいずれかです。
  • RLMObject サブクラスを使用して、多対 1 の関係をモデル化します。
  • RLMArray<X>(ここで、 XRLMObjectサブクラスであり、多対多の関係をモデル化します。

クエリ

クラス メソッドとして、 allObjectsobjectsWhere:objectsWithPredicate:を使用して、クエリを直接開始できます。 これらのメソッドを使用すると、デフォルトの Realm 内のそのクラスのインスタンスをカスタム サブクラスで簡単にクエリできます。

デフォルトのRealm以外のRealmで検索するには、allObjectsInRealm:objectsInRealm:where:objectsInRealm:withPredicate: クラス メソッドを使用します。

詳細は、次を参照してください:

RLMRealm

関係

詳細については、 Realm Swift ドキュメントを参照してください。

キー値の観察

すべてのRLMObjectプロパティ(サブクラスで作成するプロパティを含む)は、 realmobjectSchemaを除き、すべての プロパティ(サブクラスで作成するプロパティを含む)です。

Realm オブジェクトを観察するときは、次のヒントに注意してください。

  1. NSMutableArrayプロパティとは異なり、 RLMArrayプロパティでは、 -mutableArrayValueForKey:から返されたプロキシ オブジェクトを使用する必要はありません。または、含まれクラスで KVM ミューテーション メソッドを定義する必要はありません。 単純に、 RLMArrayのメソッドを直接呼び出すことができます。すべての変更は、含まれるオブジェクトによって自動的に監視されます。
  2. 管理されていないRLMObjectインスタンスは、監視されたプロパティがある間は Realm に追加できません。
  3. -observeValueForKeyPath:ofObject:change:context:内で管理対象のRLMObjectを変更することは推奨されません。 Realm が書込みトランザクションにない場合でも、プロパティは変更される可能性があります(たとえば、別のスレッドで変更が行われた後に-[RLMRealm refresh]が呼び出される場合)、および変更が適用される前に送信された通知( NSKeyValueObservingOptionPriorが使用されている場合)書込みトランザクションを開始できない場合に送信される可能性があります。

オブジェクトの作成と初期化

  • Realm オブジェクトの非マネージド インスタンスを作成します。

    非マネージド オブジェクトをその Realm に追加するには、 RLMRealmインスタンスでaddObject:を呼び出します。

    詳細は、次を参照してください:

    [RLMRealm addObject:]

    宣言

    Objective-C

    - (nonnull instancetype)init;

    Swift

    init()
  • Realm オブジェクトの非マネージド インスタンスを作成します。

    NSArrayまたはNSDictionaryインスタンスで を渡し、オブジェクトのプロパティの値を設定します。

    非マネージド オブジェクトをその Realm に追加するには、 RLMRealmインスタンスでaddObject:を呼び出します。

    詳細は、次を参照してください:

    [RLMRealm addObject:]

    宣言

    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 オブジェクトのインスタンスを作成し、それをデフォルトの Realm に追加します。

    ネストされたオブジェクトが引数に含まれている場合、 createInDefaultRealmWithValue:はそれらに対して再帰的に呼び出されます。

    value引数は、キー値コーディング準拠のオブジェクト、 NSJSONSerializationのメソッドから返された配列または辞書、または管理対象プロパティごとに 1 つの要素を含む配列にすることができます。

    必須 プロパティが存在せず、それらのプロパティがデフォルト値で定義されていない場合は、例外がスローされます。

    value引数が配列の場合、すべてのプロパティが存在し、有効で、モデルで定義されたプロパティと同じ順序で存在する必要があります。

    詳細は、次を参照してください:

    defaultPropertyValues

    宣言

    Objective-C

    + (nonnull instancetype)createInDefaultRealmWithValue:(nonnull id)value;

    Swift

    class func createInDefaultRealm(withValue value: Any) -> Self

    パラメーター

    value

    オブジェクトを入力するために使用される値。

  • 指定された値を持つ Realm オブジェクトのインスタンスを作成し、それを指定された Realm に追加します。

    ネストされたオブジェクトが引数に含まれている場合、 createInRealm:withValue:はそれらに対して再帰的に呼び出されます。

    value引数は、キー値コーディング準拠のオブジェクト、 NSJSONSerializationのメソッドから返された配列または辞書、または管理対象プロパティごとに 1 つの要素を含む配列にすることができます。

    必須 プロパティが存在せず、それらのプロパティがデフォルト値で定義されていない場合は、例外がスローされます。

    value引数が配列の場合、すべてのプロパティが存在し、有効で、モデルで定義されたプロパティと同じ順序で存在する必要があります。

    詳細は、次を参照してください:

    defaultPropertyValues

    宣言

    Objective-C

    + (nonnull instancetype)createInRealm:(nonnull RLMRealm *)realm
                                withValue:(nonnull id)value;

    Swift

    class func create(in realm: RLMRealm, withValue value: Any) -> Self

    パラメーター

    realm

    新しく作成されたオブジェクトを管理する Realm。

    value

    オブジェクトを入力するために使用される値。

  • デフォルトの Realm 内で Realm オブジェクトを作成または更新します。

    このメソッドは、プライマリキーが定義されている Realm オブジェクトタイプでのみ呼び出せます。 デフォルトの Realm に同じプライマリキー値を持つオブジェクトがすでに存在する場合は、その値が更新され、オブジェクトが返されます。 それ以外の場合、このメソッドはデフォルトの Realm 内のオブジェクトの新しいインスタンスを作成し、データを入力します。

    ネストされたオブジェクトが 引数に含まれている場合、プライマリキーがある場合はcreateOrUpdateInDefaultRealmWithValue:が再帰的に呼び出され、プライマリキーがない場合はcreateInDefaultRealmWithValue:が再帰的に呼び出されます。

    value引数はオブジェクトにデータを入力するために使用されます。 これは、Realm オブジェクト、キー値コーディング準拠オブジェクト、 NSJSONSerializationのメソッドから返される配列または辞書、または管理されているプロパティごとに 1 つの要素を含む配列にすることができます。

    オブジェクトの作成時に、必須プロパティが存在せず、それらのプロパティがデフォルト値で定義されていない場合は、例外がスローされます。

    value引数がデフォルトの Realm によってすでに管理されている Realm オブジェクトで、引数の型がレシーバーと同じであり、オブジェクトの管理プロパティの値が同じ場合、このメソッドは何も実行しません。

    オブジェクトが更新されている場合、スキーマで定義されている各プロパティは、キーと値のコーディングを使用してvalueからコピーされることによって設定されます。 value引数が特定のプロパティ名(または定義されている場合は getter 名)のvalueForKey:に応答しない場合、その値は影響を受けません。 更新された値としてNSNullを使用することで、オブジェクトの null 可能なプロパティを nil に設定できます。 既存の値が設定されている値と同じである場合でも各プロパティは設定され、通知によってそれらがすべて変更されたことが報告されます。 変更された値のみを設定するこの関数のバージョンについては、 createOrUpdateModifiedInDefaultRealmWithValue:を参照してください。

    value引数が配列の場合、すべてのプロパティが存在し、有効で、モデルで定義されたプロパティと同じ順序で存在する必要があります。

    詳細は、次を参照してください:

    defaultPropertyValues, primaryKey

    宣言

    Objective-C

    + (nonnull instancetype)createOrUpdateInDefaultRealmWithValue:(nonnull id)value;

    Swift

    class func createOrUpdateInDefaultRealm(withValue value: Any) -> Self

    パラメーター

    value

    オブジェクトを入力するために使用される値。

  • デフォルトの Realm 内で Realm オブジェクトを作成または更新します。

    このメソッドは、プライマリキーが定義されている Realm オブジェクトタイプでのみ呼び出せます。 デフォルトの Realm に同じプライマリキー値を持つオブジェクトがすでに存在する場合は、その値が更新され、オブジェクトが返されます。 それ以外の場合、このメソッドはデフォルトの Realm 内のオブジェクトの新しいインスタンスを作成し、データを入力します。

    ネストされたオブジェクトが 引数に含まれている場合、プライマリキーがある場合はcreateOrUpdateModifiedInDefaultRealmWithValue:が再帰的に呼び出され、プライマリキーがない場合はcreateInDefaultRealmWithValue:が再帰的に呼び出されます。

    value引数はオブジェクトにデータを入力するために使用されます。 これは、Realm オブジェクト、キー値コーディング準拠オブジェクト、 NSJSONSerializationのメソッドから返される配列または辞書、または管理されているプロパティごとに 1 つの要素を含む配列にすることができます。

    オブジェクトの作成時に、必須プロパティが存在せず、それらのプロパティがデフォルト値で定義されていない場合は、例外がスローされます。

    value引数がデフォルトの Realm によってすでに管理されている Realm オブジェクトで、引数の型がレシーバーと同じであり、オブジェクトの管理プロパティの値が同じ場合、このメソッドは何も実行しません。

    オブジェクトが更新されている場合、スキーマで定義されている各プロパティは、キーと値のコーディングを使用してvalueからコピーされることによって設定されます。 value引数が特定のプロパティ名(または定義されている場合は getter 名)のvalueForKey:に応答しない場合、その値は影響を受けません。 更新された値としてNSNullを使用することで、オブジェクトの null 可能なプロパティを nil に設定できます。 createOrUpdateInDefaultRealmWithValue:とは異なり、 値が変更されたプロパティのみが設定され、この呼び出しによって生成される変更通知は実際に変更されたプロパティのみを報告します。

    どのプロパティが変更されたかを確認することはわずかなオーバーヘッドを課するため、設定されているプロパティのすべてまたはほぼすべてが変更された場合、このメソッドは遅くなる可能性があります。 設定されているプロパティのほとんどまたはすべてが変更されていない場合、この方法はそれらを条件付きで設定するよりもはるかに高速で、Realm に書き込むデータ量も削減され、I/O 時間とディスク領域の両方が節約されます。

    value引数が配列の場合、すべてのプロパティが存在し、有効で、モデルで定義されたプロパティと同じ順序で存在する必要があります。

    詳細は、次を参照してください:

    defaultPropertyValues, primaryKey

    宣言

    Objective-C

    + (nonnull instancetype)createOrUpdateModifiedInDefaultRealmWithValue:
        (nonnull id)value;

    Swift

    class func createOrUpdateModifiedInDefaultRealm(withValue value: Any) -> Self

    パラメーター

    value

    オブジェクトを入力するために使用される値。

  • 指定された Realm 内で Realm オブジェクトを作成または更新します。

    このメソッドは、プライマリキーが定義されている Realm オブジェクトタイプでのみ呼び出せます。 指定された Realm 内に同じプライマリキー値を持つオブジェクトがすでに存在する場合は、その値が更新され、オブジェクトが返されます。 それ以外の場合、このメソッドは指定された Realm にこのオブジェクトの新しいインスタンスを作成し、入力します。

    ネストされたオブジェクトが 引数に含まれている場合、プライマリキーがある場合はcreateOrUpdateInRealm:withValue:が再帰的に呼び出され、プライマリキーがない場合はcreateInRealm:withValue:が再帰的に呼び出されます。

    value引数はオブジェクトにデータを入力するために使用されます。 これは、Realm オブジェクト、キー値コーディング準拠オブジェクト、 NSJSONSerializationのメソッドから返される配列または辞書、または管理されているプロパティごとに 1 つの要素を含む配列にすることができます。

    オブジェクトの作成時に、必須プロパティが存在せず、それらのプロパティがデフォルト値で定義されていない場合は、例外がスローされます。

    value引数が特定の Realm によってすでに管理されている Realm オブジェクトで、引数の型がレシーバーと同じであり、オブジェクトの管理プロパティの値が同じ場合、このメソッドは何も実行しません。

    オブジェクトが更新されている場合、スキーマで定義されている各プロパティは、キーと値のコーディングを使用してvalueからコピーされることによって設定されます。 value引数が特定のプロパティ名(または定義されている場合は getter 名)のvalueForKey:に応答しない場合、その値は影響を受けません。 更新された値としてNSNullを使用することで、オブジェクトの null 可能なプロパティを nil に設定できます。 既存の値が設定されている値と同じである場合でも各プロパティは設定され、通知によってそれらがすべて変更されたことが報告されます。 変更された値のみを設定するこの関数のバージョンについては、 createOrUpdateModifiedInRealm:withValue:を参照してください。

    value引数が配列の場合、すべてのプロパティが存在し、有効で、モデルで定義されたプロパティと同じ順序で存在する必要があります。

    詳細は、次を参照してください:

    defaultPropertyValues, primaryKey

    宣言

    Objective-C

    + (nonnull instancetype)createOrUpdateInRealm:(nonnull RLMRealm *)realm
                                        withValue:(nonnull id)value;

    Swift

    class func createOrUpdate(in realm: RLMRealm, withValue value: Any) -> Self

    パラメーター

    realm

    オブジェクトを所有する Realm。

    value

    オブジェクトを入力するために使用される値。

  • 指定された Realm 内で Realm オブジェクトを作成または更新します。

    このメソッドは、プライマリキーが定義されている Realm オブジェクトタイプでのみ呼び出せます。 指定された Realm 内に同じプライマリキー値を持つオブジェクトがすでに存在する場合は、その値が更新され、オブジェクトが返されます。 それ以外の場合、このメソッドは指定された Realm にこのオブジェクトの新しいインスタンスを作成し、入力します。

    ネストされたオブジェクトが 引数に含まれている場合、プライマリキーがある場合はcreateOrUpdateInRealm:withValue:が再帰的に呼び出され、プライマリキーがない場合はcreateInRealm:withValue:が再帰的に呼び出されます。

    value引数はオブジェクトにデータを入力するために使用されます。 これは、Realm オブジェクト、キー値コーディング準拠オブジェクト、 NSJSONSerializationのメソッドから返される配列または辞書、または管理されているプロパティごとに 1 つの要素を含む配列にすることができます。

    オブジェクトの作成時に、必須プロパティが存在せず、それらのプロパティがデフォルト値で定義されていない場合は、例外がスローされます。

    value引数が特定の Realm によってすでに管理されている Realm オブジェクトで、引数の型がレシーバーと同じであり、オブジェクトの管理プロパティの値が同じ場合、このメソッドは何も実行しません。

    オブジェクトが更新されている場合、スキーマで定義されている各プロパティは、キーと値のコーディングを使用してvalueからコピーされることによって設定されます。 value引数が特定のプロパティ名(または定義されている場合は getter 名)のvalueForKey:に応答しない場合、その値は影響を受けません。 更新された値としてNSNullを使用することで、オブジェクトの null 可能なプロパティを nil に設定できます。 createOrUpdateInRealm:withValue:とは異なり、 値が変更されたプロパティのみが設定され、この呼び出しによって生成される変更通知は実際に変更されたプロパティのみを報告します。

    どのプロパティが変更されたかを確認することはわずかなオーバーヘッドを課するため、設定されているプロパティのすべてまたはほぼすべてが変更された場合、このメソッドは遅くなる可能性があります。 設定されているプロパティのほとんどまたはすべてが変更されていない場合、この方法はそれらを条件付きで設定するよりもはるかに高速で、Realm に書き込むデータ量も削減され、I/O 時間とディスク領域の両方が節約されます。

    value引数が配列の場合、すべてのプロパティが存在し、有効で、モデルで定義されたプロパティと同じ順序で存在する必要があります。

    詳細は、次を参照してください:

    defaultPropertyValues, primaryKey

    宣言

    Objective-C

    + (nonnull instancetype)createOrUpdateModifiedInRealm:(nonnull RLMRealm *)realm
                                                withValue:(nonnull id)value;

    Swift

    class func createOrUpdateModified(in realm: RLMRealm, withValue value: Any) -> Self

    パラメーター

    realm

    オブジェクトを所有する Realm。

    value

    オブジェクトを入力するために使用される値。

プロパティ

  • オブジェクトを管理する 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 }
  • このオブジェクトが固定されているかどうかを示します。

    詳細は、次を参照してください:

    -[RLMObject freeze]

    宣言

    Objective-C

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

    Swift

    var isFrozen: Bool { get }

オブジェクトのカスタマイズ

  • インデックスを作成する必要があるプロパティのプロパティ名の配列を返します。

    string 、整数、ブール値、NSDate プロパティのみがサポートされます。

    宣言

    Objective-C

    + (nonnull NSArray<NSString *> *)indexedProperties;

    Swift

    class func indexedProperties() -> [String]

    戻り値

    プロパティ名の配列。

  • このメソッドをオーバーライドして、各プロパティに使用するデフォルト値を指定します。

    宣言

    Objective-C

    + (nullable NSDictionary *)defaultPropertyValues;

    Swift

    class func defaultPropertyValues() -> [AnyHashable : Any]?

    戻り値

    プロパティ名をデフォルト値にマッピングする辞書。

  • このメソッドをオーバーライドして、プライマリキーとして使用するプロパティの名前を指定します。

    プライマリキーとして指定できるのは、 RLMPropertyTypeStringRLMPropertyTypeIntのタイプのプロパティのみです。 プライマリキー プロパティでは、プロパティが設定されるたびに各値の一意性が強制されるため、マイナーなオーバーヘッドが発生します。 プライマリキー プロパティに対してインデックスが自動的に作成されます。

    宣言

    Objective-C

    + (nullable NSString *)primaryKey;

    Swift

    class func primaryKey() -> String?

    戻り値

    プライマリキーとして指定されるプロパティの名前。

  • このメソッドをオーバーライドして、無視するプロパティの名前を指定します。 これらのプロパティは、オブジェクトを管理する Realm によって管理されません。

    宣言

    Objective-C

    + (nullable NSArray<NSString *> *)ignoredProperties;

    Swift

    class func ignoredProperties() -> [String]?

    戻り値

    無視するプロパティ名の配列。

  • このメソッドをオーバーライドして、任意以外のプロパティの名前( にnil値を割り当てることはできません)。

    デフォルトでは、値をnilに設定できる型のすべてのプロパティは任意プロパティと見なされます。 Realm 内のオブジェクトが常にプロパティにnil以外の値を保存するよう要求するには、このメソッドから返される配列にプロパティの名前を追加します。

    RLMObject型のプロパティは任意以外にすることはできません。 配列プロパティと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インスタンスにマッピングする辞書。

デフォルトの Realm からのオブジェクトの取得とクエリ

  • デフォルトの Realm からこのオブジェクトタイプのすべてのオブジェクトを返します。

    宣言

    Objective-C

    + (nonnull RLMResults *)allObjects;

    Swift

    class func allObjects() -> RLMResults

    戻り値

    デフォルトの Realm 内のこのタイプのすべてのオブジェクトを含むRLMResults

  • デフォルトの Realm から指定された述語に一致するこのオブジェクトタイプのすべてのオブジェクトを返します。

    宣言

    Objective-C

    + (nonnull RLMResults *)objectsWhere:(nonnull NSString *)predicateFormat, ...;

    パラメーター

    predicateFormat

    述語形式の string 。オプションで、その後に変数の数の引数が続きます。

    戻り値

    指定された述語に一致する、デフォルトの Realm 内のこのタイプのすべてのオブジェクトを含むRLMResults

  • デフォルトの Realm から指定された述語に一致するこのオブジェクトタイプのすべてのオブジェクトを返します。

    宣言

    Objective-C

    + (nonnull RLMResults *)objectsWithPredicate:(nullable NSPredicate *)predicate;

    Swift

    class func objects(with predicate: NSPredicate?) -> RLMResults

    パラメーター

    predicate

    オブジェクトをフィルタリングする述語。

    戻り値

    指定された述語に一致する、デフォルトの Realm 内のこのタイプのすべてのオブジェクトを含むRLMResults

  • 指定されたプライマリキーを持つこのオブジェクトタイプの単一のインスタンスをデフォルトの Realm から検索します。

    指定されたプライマリキーを持つデフォルトの Realm からオブジェクトを返します。オブジェクトが存在しない場合はnilを返します。 これは同等の[[SubclassName objectsWhere:@"primaryKeyPropertyName = %@", key] firstObject]よりもわずかに高速です。

    このメソッドでは、受信サブクラスでprimaryKeyがオーバーライドされる必要があります。

    詳細は、次を参照してください:

    -primaryKey

    宣言

    Objective-C

    + (nullable instancetype)objectForPrimaryKey:(nullable id)primaryKey;

    Swift

    class func object(forPrimaryKey primaryKey: Any?) -> Self?

    戻り値

    このオブジェクトタイプのオブジェクト、または指定されたプライマリキーを持つオブジェクトが存在しない場合はnil

特定の Realm のクエリ

  • 指定された Realm からこのオブジェクトタイプのすべてのオブジェクトを返します。

    宣言

    Objective-C

    + (nonnull RLMResults *)allObjectsInRealm:(nonnull RLMRealm *)realm;

    Swift

    class func allObjects(in realm: RLMRealm) -> RLMResults

    パラメーター

    realm

    クエリする Realm。

    戻り値

    指定された Realm 内のこのタイプのすべてのオブジェクトを含むRLMResults

  • 指定された Realm から指定された述語に一致するこのオブジェクトタイプのすべてのオブジェクトを返します。

    宣言

    Objective-C

    + (nonnull RLMResults *)objectsInRealm:(nonnull RLMRealm *)realm
                                     where:(nonnull NSString *)predicateFormat, ...;

    パラメーター

    predicateFormat

    述語形式の string 。オプションで、その後に変数の数の引数が続きます。

    realm

    クエリする Realm。

    戻り値

    指定された述語に一致する、指定された Realm 内のこのタイプのすべてのオブジェクトを含むRLMResults

  • 指定された Realm から指定された述語に一致するこのオブジェクトタイプのすべてのオブジェクトを返します。

    宣言

    Objective-C

    + (nonnull RLMResults *)objectsInRealm:(nonnull RLMRealm *)realm
                             withPredicate:(nullable NSPredicate *)predicate;

    Swift

    class func objects(in realm: RLMRealm, with predicate: NSPredicate?) -> RLMResults

    パラメーター

    predicate

    要素をフィルタリングするために使用する述語。

    realm

    クエリする Realm。

    戻り値

    指定された述語に一致する、指定された Realm 内のこのタイプのすべてのオブジェクトを含むRLMResults

  • 指定された Realm から、指定されたプライマリキーを持つこのオブジェクトタイプの単一のインスタンスを検索します。

    指定されたプライマリキーを持つ指定された Realm からオブジェクトを返します。オブジェクトが存在しない場合はnilを返します。 これは同等の[[SubclassName objectsInRealm:realm where:@"primaryKeyPropertyName = %@", key] firstObject]よりもわずかに高速です。

    このメソッドでは、受信サブクラスでprimaryKeyがオーバーライドされる必要があります。

    詳細は、次を参照してください:

    -primaryKey

    宣言

    Objective-C

    + (nullable instancetype)objectInRealm:(nonnull RLMRealm *)realm
                             forPrimaryKey:(nullable id)primaryKey;

    Swift

    class func object(in realm: RLMRealm, forPrimaryKey primaryKey: Any?) -> Self?

    戻り値

    このオブジェクトタイプのオブジェクト、または指定されたプライマリキーを持つオブジェクトが存在しない場合はnil

notifications

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

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

    異なるスレッドまたは異なるプロセスで実行される書込みトランザクションの場合、ブロックは管理 Realm が変更を含むバージョンに(自動)更新されたときに呼び出されますが、ローカルの書込みトランザクションでは、将来のある時点で呼び出されます書込みトランザクション (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 RLMObject *)object;

    Swift

    func isEqual(to object: RLMObject) -> 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