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
NSInteger
、int
、long
、float
、double
BOOL
orbool
NSDate
NSData
NSNumber<X>
、X
は、任意の数値プロパティの場合、RLMInt
、RLMFloat
、RLMDouble
、またはRLMBool
のいずれかです。RLMObject
サブクラスを使用して、多対 1 の関係をモデル化します。RLMArray<X>
(ここで、X
はRLMObject
サブクラスであり、多対多の関係をモデル化します。
クエリ
クラス メソッドとして、 allObjects
、 objectsWhere:
、 objectsWithPredicate:
を使用して、クエリを直接開始できます。 これらのメソッドを使用すると、デフォルトの Realm 内のそのクラスのインスタンスをカスタム サブクラスで簡単にクエリできます。
デフォルトのRealm以外のRealmで検索するには、allObjectsInRealm:
、objectsInRealm:where:
、objectsInRealm:withPredicate:
クラス メソッドを使用します。
詳細は、次を参照してください:
RLMRealm
関係
詳細については、 Realm Swift ドキュメントを参照してください。
キー値の観察
すべてのRLMObject
プロパティ(サブクラスで作成するプロパティを含む)は、 realm
とobjectSchema
を除き、すべての プロパティ(サブクラスで作成するプロパティを含む)です。
Realm オブジェクトを観察するときは、次のヒントに注意してください。
NSMutableArray
プロパティとは異なり、RLMArray
プロパティでは、-mutableArrayValueForKey:
から返されたプロキシ オブジェクトを使用する必要はありません。または、含まれクラスで KVM ミューテーション メソッドを定義する必要はありません。 単純に、RLMArray
のメソッドを直接呼び出すことができます。すべての変更は、含まれるオブジェクトによって自動的に監視されます。- 管理されていない
RLMObject
インスタンスは、監視されたプロパティがある間は Realm に追加できません。 -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
オブジェクトを入力するために使用される値。
-
オブジェクトの管理対象プロパティを一覧表示するオブジェクト スキーマ。
宣言
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]?
戻り値
プロパティ名をデフォルト値にマッピングする辞書。
-
このメソッドをオーバーライドして、プライマリキーとして使用するプロパティの名前を指定します。
プライマリキーとして指定できるのは、
RLMPropertyTypeString
とRLMPropertyTypeInt
のタイプのプロパティのみです。 プライマリキー プロパティでは、プロパティが設定されるたびに各値の一意性が強制されるため、マイナーなオーバーヘッドが発生します。 プライマリキー プロパティに対してインデックスが自動的に作成されます。宣言
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 内のこのタイプのすべてのオブジェクトを含む
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 からこのオブジェクトタイプのすべてのオブジェクトを返します。
宣言
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
。
-
オブジェクトが変更されるたびに呼び出されるブロックを登録します。
ブロックは、オブジェクトを削除する、またはプロパティを既存の値に設定する自己割り当てを含む、オブジェクトの管理されているプロパティのいずれかを変更する各書込みトランザクションの後に非同期に呼び出されます。
異なるスレッドまたは異なるプロセスで実行される書込みトランザクションの場合、ブロックは管理 Realm が変更を含むバージョンに(自動)更新されたときに呼び出されますが、ローカルの書込みトランザクションでは、将来のある時点で呼び出されます書込みトランザクション (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 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