RLMRealm
Objective-C
@interface RLMRealm : NSObject
Swift
@_nonSendable(_assumed) class RLMRealm : NSObject
RLMRealm
インスタンス(Realm とも呼ばれる)は、Realm データベースを表します。
Realm はディスク上( +[RLMRealm realmWithURL:]
を参照)またはメモリ( RLMRealmConfiguration
を参照)に保存できます。
RLMRealm
インスタンスは内部的にキャッシュされ、実行ループの 1 回の反復内に 1 つのスレッドで複数回(同じパスまたは識別子を使用して)同等のRLMRealm
オブジェクトを構築すると、通常同じRLMRealm
オブジェクトが返されます。
RLMRealm
インスタンスが確実に破棄されるようにしたい場合(たとえば、Realm を開き、いくつかのプロパティを確認した後、Realm ファイルを削除して再度開きたい場合)は、Realm を使用するコードを配置します@autoreleasepool {}
内で、それへの他の強力な参照がないことを確認します。
警告
停止していないRLMRealm
インスタンスはスレッドされており、スレッドやディスパッチ キューとの間で共有することはできません。 そのような操作を試みると例外がスローされます。 このメソッドは、Realm を操作する各スレッドで呼び出す必要があります。 ディスパッチ キューの場合、ディスパッチされるブロックごとにこれを呼び出す必要があります。キューではすべてのブロックが同じスレッドで実行されることが保証されないためです。
-
デフォルトの Realm のインスタンスを取得します。
デフォルトの Realm は、
RLMRealm
パラメータを取らないが、それ以外の点では特別でないRLMObject
クラス メソッドによって使用されます。 デフォルトの Realm は、iOS 上のアプリケーションのドキュメントディレクトリ、macOS 上のアプリケーション サポートディレクトリ、および vOS のキャッシュディレクトリに、 default.realmとして保存されます。デフォルトの Realm はデフォルトの
RLMRealmConfiguration
を使用して作成されます。これは+[RLMRealmConfiguration setDefaultConfiguration:]
から変更できます。宣言
Objective-C
+ (nonnull instancetype)defaultRealm;
Swift
class func `default`() -> Self
戻り値
現在のスレッドのデフォルトの
RLMRealm
インスタンス。 -
指定されたキューにバインドされたデフォルトの Realm のインスタンスを取得します。
キューバインドされた RMRealm は、開かれたスレッドに制限されるのではなく、指定されたキューに制限されます。 これらは、ブロックがキューにディスパッチする限り、どのスレッドからでもアクセスでき、通知はスレッドの実行ループではなくキューに配信されます。
Realm はシリアル キューにのみ制限できます。 キューで制限された RMRealm インスタンスはそのキューにない場合でも取得できますが、最初にキューにディスパッチせずにそのインスタンスで操作を実行しようとすると、誤ったスレッド例外がスローされます。
デフォルトの Realm はデフォルトの
RLMRealmConfiguration
を使用して作成されます。これは+[RLMRealmConfiguration setDefaultConfiguration:]
から変更できます。宣言
Objective-C
+ (nonnull instancetype)defaultRealmForQueue:(nonnull dispatch_queue_t)queue;
Swift
class func defaultRealm(for queue: dispatch_queue_t) -> Self
パラメーター
queue
Realm を構成するシリアル ディスパッチ キュー。
戻り値
特定のキューのデフォルトの
RLMRealm
インスタンス。 -
指定された構成を持つ
RLMRealm
インスタンスを取得します。宣言
Objective-C
+ (nullable instancetype) realmWithConfiguration:(nonnull RLMRealmConfiguration *)configuration error:(NSError *_Nullable *_Nullable)error;
Swift
convenience init(configuration: RLMRealmConfiguration) throws
パラメーター
configuration
Realm の作成時に使用する構成オブジェクト。
error
エラーが発生した場合、 には問題を説明する
NSError
オブジェクトが返されます。 エラーの可能性を考慮していない場合は、NULL
を渡します。戻り値
RLMRealm
インスタンス。 -
指定されたキューにバインドされた指定された構成を持つ
RLMRealm
インスタンスを取得します。キューバインドされた RMRealm は、開かれたスレッドに制限されるのではなく、指定されたキューに制限されます。 これらは、ブロックがキューにディスパッチする限り、どのスレッドからでもアクセスでき、通知はスレッドの実行ループではなくキューに配信されます。
Realm はシリアル キューにのみ制限できます。 キューで制限された RMRealm インスタンスはそのキューにない場合でも取得できますが、最初にキューにディスパッチせずにそのインスタンスで操作を実行しようとすると、誤ったスレッド例外がスローされます。
宣言
Objective-C
+ (nullable instancetype) realmWithConfiguration:(nonnull RLMRealmConfiguration *)configuration queue:(nullable dispatch_queue_t)queue error:(NSError *_Nullable *_Nullable)error;
Swift
convenience init(configuration: RLMRealmConfiguration, queue: dispatch_queue_t?) throws
パラメーター
configuration
Realm の作成時に使用する構成オブジェクト。
queue
Realm を構成するシリアル ディスパッチ キュー。
error
エラーが発生した場合、 には問題を説明する
NSError
オブジェクトが返されます。 エラーの可能性を考慮していない場合は、NULL
を渡します。戻り値
RLMRealm
インスタンス。 -
指定されたファイル URL で永続化された
RLMRealm
インスタンスを取得します。宣言
Objective-C
+ (nonnull instancetype)realmWithURL:(nonnull NSURL *)fileURL;
Swift
convenience init(url fileURL: URL)
パラメーター
fileURL
Realm を保存するファイルのローカル URL。
戻り値
RLMRealm
インスタンス。 -
非同期に Realm を開き、指定されたキューのブロックに配信します。
Realm を非同期に起動すると、指定されたキューにディスパッチする前に、バックグラウンド スレッド上で Realm を使用可能な状態に戻すために必要なすべての作業(時間がかかる可能性のある移行の実行など)がバックグラウンド スレッドで実行されます。 さらに、同期された Realm は、操作がローカルでダウンロードされ利用可能になった時点で利用可能なすべてのリモート コンテンツを待機します。
コールバック関数に渡される Realm は、
-[RLMRealm realmWithConfiguration:queue:error]
が使用されていた場合と同様に、コールバック キューに制限されます。宣言
Objective-C
+ (nonnull RLMAsyncOpenTask *) asyncOpenWithConfiguration:(nonnull RLMRealmConfiguration *)configuration callbackQueue:(nonnull dispatch_queue_t)callbackQueue callback:(nonnull RLMAsyncOpenRealmCallback)callback;
Swift
class func asyncOpen(with configuration: RLMRealmConfiguration, callbackQueue: dispatch_queue_t, callback: @escaping RLMAsyncOpenRealmCallback) -> RLMAsyncOpenTask
パラメーター
configuration
Realm を開くときに使用する構成オブジェクト。
callbackQueue
コールバックを実行するシリアル ディスパッチ キュー。
callback
コールバック ブロック。 Realm が正常に開かれた場合は、引数として に渡されます。 それ以外の場合は、問題を説明する
NSError
が代わりにブロックに渡されます。 -
Realm が現在書込みトランザクションを実行しているかどうかを示します。
警告
このプロパティをチェックするだけで、オブジェクトを作成、更新、または削除する必要があるたびに書込みトランザクションを開始します。 指定すると、多数の書込みトランザクションが作成され、パフォーマンスが低下する恐れがあります。 代わりに、単一のトランザクション中に複数の更新を実行することを常に優先してください。宣言
Objective-C
@property (nonatomic, readonly) BOOL inWriteTransaction;
Swift
var inWriteTransaction: Bool { get }
-
この
RLMRealm
インスタンスの作成に使用されたRLMRealmConfiguration
オブジェクト。宣言
Objective-C
@property (nonatomic, readonly) RLMRealmConfiguration *_Nonnull configuration;
Swift
var configuration: RLMRealmConfiguration { get }
-
この Realm にオブジェクトが含まれているかどうかを示します。
宣言
Objective-C
@property (nonatomic, readonly) BOOL isEmpty;
Swift
var isEmpty: Bool { get }
-
この Realm が固定されているかどうかを示します。
詳細は、次を参照してください:
-[RLMRealm freeze]
宣言
Objective-C
@property (nonatomic, readonly, getter=isFrozen) BOOL frozen;
Swift
var isFrozen: Bool { get }
-
この Realm の固定(不変)スナップショットを返します。
固定された Realm は、Realm のデータの特定のバージョンの不変のスナップショット ビューです。 通常の RMRealm インスタンスとは異なり、Realm に行われた書込みを反映するようにライブ更新されることはなく、任意のスレッドからアクセスできます。 固定された Realm への書込みは許可されておらず、書込みトランザクションを開始しようとすると例外がスローされます。
固定された Realm から読み取られるすべてのオブジェクトとコレクションも固定されます。
宣言
Objective-C
- (nonnull RLMRealm *)freeze;
Swift
func freeze() -> RLMRealm
-
この Realm のライブ参照を返します。
返された Realm から読み取られたすべてのオブジェクトとコレクションは、固定されなくなります。 このメソッドは、まだ固定されていない場合は
self
を返します。宣言
Objective-C
- (nonnull RLMRealm *)thaw;
Swift
func thaw() -> RLMRealm
-
指定されたローカル URL に Realm の圧縮され、オプションで暗号化されたコピーを書込みます。
宛先ファイルがすでに存在することはできません。
このメソッドが書込みトランザクション (write transaction) 内から呼び出されると、前の書込みトランザクションがコミットされた時点のデータではなく、現在のデータが書き込まれることに注意してください。
宣言
Objective-C
- (BOOL)writeCopyToURL:(nonnull NSURL *)fileURL encryptionKey:(nullable NSData *)key error:(NSError *_Nullable *_Nullable)error;
Swift
func writeCopy(to fileURL: URL, encryptionKey key: Data?) throws
パラメーター
fileURL
Realm を保存するためのローカル URL。
key
新しいファイルを暗号化するための任意の 64 バイト暗号化キー。
error
エラーが発生した場合、 には問題を説明する
NSError
オブジェクトが返されます。 エラーの可能性を考慮していない場合は、NULL
を渡します。戻り値
YES
Realm がディスクに正常に書き込まれた場合は 、エラーが発生した場合はNO
になります。 -
指定された構成で指定された指定された場所に Realm のコピーを書込みます。
提供された構成が
RLMUser
から派生している場合、この Realm は同期機能を有効にしてコピーされます。宛先ファイルがすでに存在することはできません。
宣言
Objective-C
- (BOOL)writeCopyForConfiguration:(nonnull RLMRealmConfiguration *)configuration error:(NSError *_Nullable *_Nullable)error;
Swift
func writeCopy(for configuration: RLMRealmConfiguration) throws
パラメーター
configuration
Realm 構成。
error
エラーが発生した場合、 には問題を説明する
NSError
オブジェクトが返されます。 エラーの可能性を考慮していない場合は、NULL
を渡します。戻り値
YES
Realm がディスクに正常に書き込まれた場合は 、エラーが発生した場合はNO
になります。 -
指定された構成の Realm ファイルがディスク上にローカルに存在するかどうかを確認します。
非同期、メモリ内以外の Realm の場合、これは
-[NSFileManager.defaultManager fileExistsAtPath:config.path]
と同じです。 同期された Realm の場合、Realm を開くときに実行されるように、サーバー、仮想パス、ユーザーに基づいてディスク上の実際のパスを計算します。宣言
Objective-C
+ (BOOL)fileExistsForConfiguration:(nonnull RLMRealmConfiguration *)config;
Swift
class func fileExists(for config: RLMRealmConfiguration) -> Bool
パラメーター
config
の有無を確認する Realm 構成。
戻り値
指定された構成の Realm ファイルがディスクに存在する場合は はい、そうでない場合は 。
-
指定された構成のローカル Realm ファイルと関連する一時ファイルを削除します。
これにより、特定の構成で Realm を開くことで作成される「.realm」、「.note」、および「.management」ファイルが削除されます。 .lock ファイル(永続化されたデータを含まず、Realm ファイルが開かれるたびに最初から再作成される)は削除されません。
Realm は現在、スレッドまたは別のプロセスで開いてはなりません。 その場合、これは NULLではない を返し、 RRMAlreadyOpen エラーを報告します。削除が発生している間に別のスレッドで Realm を開こうとすると、ブロックされます(その後、新しい Realm を作成してそれを開きます)。
Realm がすでに存在しない場合は、
NO
が返され、 NSFileNoSatchFileError というエラーが報告されます。宣言
Objective-C
+ (BOOL)deleteFilesForConfiguration:(nonnull RLMRealmConfiguration *)config error:(NSError *_Nullable *_Nullable)error;
Swift
class func deleteFiles(for config: RLMRealmConfiguration) throws -> Bool
パラメーター
config
削除する Realm を識別する Realm 構成。
戻り値
いずれかのファイルが削除された場合は はい、それ以外の場合は ではありません。
-
この Realm の変更の通知ハンドラーを追加し、通知トークンを返します。
通知ハンドラーは、現在のスレッドまたは他のスレッドで各書込みトランザクションがコミットされた後に呼び出されます。
ハンドラー ブロックは、追加されたのと同じスレッドで呼び出され、現在実行ループ内にあるスレッドにのみ追加できます。 バックグラウンド スレッドで実行ループを具体的に作成して実行している場合を除き、これは通常、メイン スレッドのみになります。
ブロックには、次の定義があります。
typedef void(^RLMNotificationBlock)(RLMNotification notification, RLMRealm *realm);
次のパラメータを受け取ります。
NSString
* notification : 受信通知の名前。 送信される通知の内容については、RLMRealmNotification
を参照してください。RLMRealm
* Realm : この通知が発生した Realm。
宣言
Objective-C
- (nonnull RLMNotificationToken *)addNotificationBlock: (nonnull RLMNotificationBlock)block;
Swift
func addNotificationBlock(_ block: @escaping RLMNotificationBlock) -> RLMNotificationToken
パラメーター
block
Realm 通知を処理するために呼び出されるブロック。
戻り値
変更通知を引き続き受信する限り保持する必要があるトークン オブジェクト。
-
Realm で書込みトランザクション (write transaction) を開始します。
Realm ファイルごとに一度に開くことができる書込みトランザクションは 1 つだけです。 書込みトランザクションはネストできず、すでに書込みトランザクションが行われている Realm で書込みトランザクションを開始しようとすると、例外がスローされます。 他のスレッドまたは他のプロセス内の同じ Realm ファイルに対する
RLMRealm
インスタンスからbeginWriteTransaction
への呼び出しは、現在の書込みトランザクションが完了またはキャンセルされるまでブロックされます。書込みトランザクションを開始する前に、
beginWriteTransaction
はrefresh
が呼び出された場合と同様にRLMRealm
インスタンスを最新の Realm バージョンに更新し、該当する場合は通知を生成します。 Realm がすでに最新になっている場合、これは効果がありません。書込みトランザクションが実行ループの複数のサイクルにまたがる場合はまれに、書込みトランザクションがコミットされるまで、書込みトランザクションに参加する Realm が起動していることを確認する必要があります。
宣言
Objective-C
- (void)beginWriteTransaction;
Swift
func beginWriteTransaction()
-
現在の書込みトランザクション内のすべての書込み操作をコミットし、トランザクションを終了します。
変更を保存すると、この特定の
RLMRealm
インスタンスに登録されているすべての通知ブロックが同期的に呼び出されます。 他のスレッドまたはコレクションに登録された通知ブロックは非同期に呼び出されます。 この書込みトランザクション (write transaction) に関する特定の通知を希望しない場合は、commitWriteTransactionWithoutNotifying:error:
を参照してください。このメソッドは、書込み (write) を保存するために使用できるディスク容量が不足している場合や、予期しない I/O エラーが発生している場合に失敗することがあります。 このバージョンの メソッドは、エラーが発生したときに例外をスローします。 エラーを処理する場合は、代わりに
NSError
出力パラメータを含むバージョンを使用してください。警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Objective-C
- (void)commitWriteTransaction;
-
現在の書込みトランザクション内のすべての書込み操作をコミットし、トランザクションを終了します。
変更を保存すると、この特定の
RLMRealm
インスタンスに登録されているすべての通知ブロックが同期的に呼び出されます。 他のスレッドまたはコレクションに登録された通知ブロックは非同期に呼び出されます。 この書込みトランザクション (write transaction) に関する特定の通知を希望しない場合は、commitWriteTransactionWithoutNotifying:error:
を参照してください。このメソッドは、書込み (write) を保存するために使用できるディスク容量が不足している場合や、予期しない I/O エラーが発生している場合に失敗することがあります。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
宣言
Objective-C
- (BOOL)commitWriteTransaction:(NSError *_Nullable *_Nullable)error;
Swift
func commitWriteTransaction() throws
パラメーター
error
エラーが発生した場合、 には問題を説明する
NSError
オブジェクトが返されます。 エラーの可能性を考慮していない場合は、NULL
を渡します。戻り値
トランザクションが成功したかどうか。
-
変更の特定の通知ブロックを通知せずに、現在の書込みトランザクション内のすべての書込み操作をコミットします。
変更を保存すると、この特定の
RLMRealm
インスタンスに登録されているすべての通知ブロックが同期的に呼び出されます。 他のスレッドまたはコレクションに登録された通知ブロックは、非同期に呼び出されるようにスケジュールされます。関連する通知トークンを渡すことで、この書込みトランザクションで行われた変更に関する特定の通知ブロックを通知するようスキップできます。 これは主に、書込みトランザクションが UI ですでに行われた変更を保存しており、通知ブロックによる同じ変更の再適用の試行を避けたい場合に便利です。
このメソッドに渡されるトークンは、この特定の
RLMRealm
インスタンスの通知用のものである必要があります。 このメソッドを使用して、異なるスレッドの通知をスキップすることはできません。このメソッドは、書込み (write) を保存するために使用できるディスク容量が不足している場合や、予期しない I/O エラーが発生している場合に失敗することがあります。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
宣言
Objective-C
- (BOOL)commitWriteTransactionWithoutNotifying: (nonnull NSArray<RLMNotificationToken *> *)tokens error:(NSError *_Nullable *_Nullable) error;
Swift
func commitWriteTransactionWithoutNotifying(_ tokens: [RLMNotificationToken]) throws
パラメーター
tokens
この書込みトランザクション (write transaction) で行われた変更について通知されないコールバックの追加から返された通知トークンの配列。
error
エラーが発生した場合、 には問題を説明する
NSError
オブジェクトが返されます。 エラーの可能性を考慮していない場合は、NULL
を渡します。戻り値
トランザクションが成功したかどうか。
-
現在の書込みトランザクション中に行われたすべての書込みを元に戻し、トランザクションを終了します。
これにより、Realm 内のすべてのオブジェクトは、書込みトランザクション (write transaction) の開始時の状態にロールバックされ、トランザクションが終了します。
これにより、削除されたオブジェクトのデータは復元されますが、無効化されたオブジェクト インスタンスは有効化されません。 Realm に追加された
RLMObject
は、管理されなくなるのではなく、無効化されます。 次のコードがあるとします。ObjectType *oldObject = [[ObjectType objectsWhere:@"..."] firstObject]; ObjectType *newObject = [[ObjectType alloc] init]; [realm beginWriteTransaction]; [realm addObject:newObject]; [realm deleteObject:oldObject]; [realm cancelWriteTransaction];
oldObject
とnewObject
はどちらもYES
に対してisInvalidated
を返しますが、oldObject
を提供したクエリを再実行すると、有効なオブジェクトが再度返されます。トランザクション中に変更されたオブジェクトの KVE オブジェクトは、初期値に戻った変更について通知されますが、キャンセルされた書込みトランザクションによって他の通知は生成されません。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。宣言
Objective-C
- (void)cancelWriteTransaction;
Swift
func cancelWriteTransaction()
-
書込みトランザクション (write transaction) 内で指定されたブロックに含まれるアクションを実行します。
詳細は、次を参照してください:
[RLMRealm transactionWithoutNotifying:block:error:]
宣言
Objective-C
- (void)transactionWithBlock:(nonnull void (^)(void))block;
-
書込みトランザクション (write transaction) 内で指定されたブロックに含まれるアクションを実行します。
詳細は、次を参照してください:
[RLMRealm transactionWithoutNotifying:block:error:]
宣言
Objective-C
- (BOOL)transactionWithBlock:(nonnull void (^)(void))block error:(NSError *_Nullable *_Nullable)error;
Swift
func transaction(_ block: () -> Void) throws
-
書込みトランザクション (write transaction) 内で指定されたブロックに含まれるアクションを実行します。
詳細は、次を参照してください:
[RLMRealm transactionWithoutNotifying:block:error:]
宣言
Objective-C
- (void)transactionWithoutNotifying: (nonnull NSArray<RLMNotificationToken *> *)tokens block:(nonnull void (^)(void))block;
Swift
func transactionWithoutNotifying(_ tokens: [RLMNotificationToken], block: () -> Void)
-
書込みトランザクション (write transaction) 内で指定されたブロックに含まれるアクションを実行します。
書込みトランザクションはネストできず、すでに書込みトランザクションに参加している Realm で書込みトランザクションを実行しようとすると、例外がスローされます。 他のスレッドの
RLMRealm
インスタンスからtransactionWithBlock:
への呼び出しは、現在の書込みトランザクションが完了するまでブロックされます。書込みトランザクションを開始する前に、
transactionWithBlock:
はrefresh
が呼び出された場合と同様にRLMRealm
インスタンスを最新の Realm バージョンに更新し、該当する場合は通知を生成します。 Realm がすでに最新になっている場合、これは効果がありません。関連する通知トークンを渡すことで、この書込みトランザクションで行われた変更に関する特定の通知ブロックを通知するようスキップできます。 これは主に、書込みトランザクションが UI ですでに行われた変更を保存しており、通知ブロックによる同じ変更の再適用の試行を避けたい場合に便利です。
このメソッドに渡されるトークンは、この特定の
RLMRealm
インスタンスの通知用のものである必要があります。 このメソッドを使用して、異なるスレッドの通知をスキップすることはできません。宣言
Objective-C
- (BOOL)transactionWithoutNotifying: (nonnull NSArray<RLMNotificationToken *> *)tokens block:(nonnull void (^)(void))block error:(NSError *_Nullable *_Nullable)error;
Swift
func transactionWithoutNotifying(_ tokens: [RLMNotificationToken], block: () -> Void, error: ()) throws
パラメーター
tokens
この書込みトランザクション (write transaction) で行われた変更について通知されないコールバックの追加から返された通知トークンの配列。
block
実行する アクション を含むブロック。
error
エラーが発生した場合、 には問題を説明する
NSError
オブジェクトが返されます。 エラーの可能性を考慮していない場合は、NULL
を渡します。戻り値
トランザクションが成功したかどうか。
-
Realm が現在非同期書込み操作を実行しているかどうかを示します。 これは、
beginAsyncWriteTransaction
、commitAsyncWriteTransaction
、またはasyncTransactionWithBlock:
を呼び出すと はい になり、スケジュールされたすべての非同期書込み作業が完了するまでその状態は維持されます。警告
これがYES
の場合、Realm を閉じるか無効にすると、スケジュールされた作業が完了するまでブロックされます。宣言
Objective-C
@property (nonatomic, readonly) BOOL isPerformingAsynchronousWriteOperations;
Swift
var isPerformingAsynchronousWriteOperations: Bool { get }
-
非同期書込みトランザクションを開始します。 この関数は、バックグラウンド スレッドで書込みトランザクションを非同期に開始し、トランザクションが開始されると元のスレッドまたはキューでブロックを呼び出します。
beginWriteTransaction
とは異なり、書込みトランザクション内で別のスレッドが実行されている場合は、呼び出しスレッドをブロックすることはなく、常にすぐに返されます。 この関数(または非同期書込みトランザクションを実行する他の関数)を複数回呼び出すと、キューに入れられたのと同じ順序で呼び出されるブロックがキューに入れられます。 これには、同期トランザクションとは異なり、書込みトランザクション ブロック内からの呼び出しが含まれます。宣言
Objective-C
- (RLMAsyncTransactionId)beginAsyncWriteTransaction: (nonnull void (^)(void))block;
Swift
func beginAsyncWriteTransaction(_ block: @escaping () -> Void) -> RLMAsyncTransactionId
パラメーター
block
書込みトランザクション (write transaction) 内で実行するアクションを含むブロック。
block
は、commitAsyncWriteTransaction
、commitWriteTransaction
、またはcancelWriteTransaction
を呼び出して終了する必要があります。 これらの呼び出しのいずれも行わずに返すことは、cancelWriteTransaction
を呼び出すことと同じです。戻り値
非同期トランザクションを識別する ID 。ブロックが呼び出される前に
cancelAsyncTransaction:
に渡すことができ、ブロックの保留中の呼び出しをキャンセルします。 -
書込みトランザクションを非同期にコミットします。 呼び出しは をすぐに返し、I/O が専用のバックグラウンド スレッドで実行されている間に呼び出し元の続行を許可します。 これは、書込みトランザクションが
beginWriteTransaction
で開始されたか、beginAsyncWriteTransaction
で開始されたかに関係なく使用できます。宣言
Objective-C
- (RLMAsyncTransactionId)commitAsyncWriteTransaction: (nullable void (^)(NSError *_Nullable)) completionBlock allowGrouping:(BOOL)allowGrouping;
Swift
@_unsafeInheritExecutor func commitAsyncWriteTransaction(_ completionBlock: (((any Error)?) -> Void)?, allowGrouping: Bool) -> RLMAsyncTransactionId
パラメーター
completionBlock
コミットがエラーで完了するか失敗すると、ソース スレッドまたはキューで呼び出されるブロック。
allowGrouping
YES
の場合、commitAsyncWriteTransaction:
への複数の連続した呼び出しをバッチ処理して 1 つのグループの安定ストレージに永続化できます。 これにより、特にバッチされる個々のトランザクションが小さい場合に書込みパフォーマンスが向上します。 クラッシュや停電が発生した場合、コミットするための呼び出しが返されたすぐにデータが永続化されたことを保証する通常の保証ではなく、グループ化されたトランザクションのすべてが失われるか、トランザクションが正常に実行されないかのどちらかになります。戻り値
非同期トランザクションのコミットを識別する ID は、完了ブロックが呼び出される前に
cancelAsyncTransaction:
に渡され、ブロックの保留中の呼び出しがキャンセルされます。 これはコミット自体をキャンセルしないことに注意してください。 -
書込みトランザクションを非同期にコミットします。 呼び出しは をすぐに返し、I/O が専用のバックグラウンド スレッドで実行されている間に呼び出し元の続行を許可します。 これは、書込みトランザクションが
beginWriteTransaction
で開始されたか、beginAsyncWriteTransaction
で開始されたかに関係なく使用できます。宣言
Objective-C
- (RLMAsyncTransactionId)commitAsyncWriteTransaction: (nonnull void (^)(NSError *_Nullable))completionBlock;
Swift
func commitAsyncWriteTransaction(_ completionBlock: @escaping ((any Error)?) -> Void) -> RLMAsyncTransactionId
パラメーター
completionBlock
コミットがエラーで完了するか失敗すると、ソース スレッドまたはキューで呼び出されるブロック。
戻り値
非同期トランザクションのコミットを識別する ID は、完了ブロックが呼び出される前に
cancelAsyncTransaction:
に渡され、ブロックの保留中の呼び出しがキャンセルされます。 これはコミット自体をキャンセルしないことに注意してください。 -
書込みトランザクションを非同期にコミットします。 呼び出しは をすぐに返し、I/O が専用のバックグラウンド スレッドで実行されている間に呼び出し元の続行を許可します。 これは、書込みトランザクションが
beginWriteTransaction
で開始されたか、beginAsyncWriteTransaction
で開始されたかに関係なく使用できます。宣言
Objective-C
- (RLMAsyncTransactionId)commitAsyncWriteTransaction;
Swift
func commitAsyncWriteTransaction() -> RLMAsyncTransactionId
戻り値
非同期トランザクションのコミットを識別する ID は、完了ブロックが呼び出される前に
cancelAsyncTransaction:
に渡され、ブロックの保留中の呼び出しがキャンセルされます。 これはコミット自体をキャンセルしないことに注意してください。 -
非同期トランザクションのキューにあるブロックをキャンセルします。 これにより、非同期開始または非同期コミットに渡されたブロックをキャンセルできます。 開始をキャンセルすると、そのトランザクションは完全にキャンセルされますが、コミットをキャンセルすると完了コールバックの呼び出しがキャンセルされるだけで、コミットは引き続き実行されます。 トランザクションはブロックが呼び出される前にのみキャンセルでき、ブロック内から
cancelAsyncTransaction:
を呼び出す操作は必要ありません。宣言
Objective-C
- (void)cancelAsyncTransaction:(RLMAsyncTransactionId)asyncTransactionId;
Swift
func cancelAsyncTransaction(_ asyncTransactionId: RLMAsyncTransactionId)
パラメーター
asyncTransactionId
beginAsyncWriteTransaction:
またはcommitAsyncWriteTransaction:
のいずれかのトランザクション ID。 -
書込みトランザクション 内で指定されたブロックに含まれるアクションを非同期に実行します。 書込みトランザクションは
beginAsyncWriteTransaction:
を呼び出す場合と同様に非同期に開始され、デフォルトではブロックが完了した後にトランザクションは非同期にコミットされます。 ブロック内からcommitWriteTransaction
またはcancelWriteTransaction
を明示的に呼び出して、書込みトランザクションを同期にコミットまたはキャンセルすることもできます。宣言
Objective-C
- (RLMAsyncTransactionId) asyncTransactionWithBlock:(nonnull void (^)(void))block onComplete: (nullable void (^)(NSError *_Nonnull))completionBlock;
Swift
func asyncTransaction(_ block: @escaping () -> Void, onComplete completionBlock: ((any Error) -> Void)? = nil) -> RLMAsyncTransactionId
パラメーター
block
実行する アクション を含むブロック。
completionBlock
コミットがエラーで完了するか失敗すると、ソース スレッドまたはキューで呼び出されるブロック。
戻り値
非同期トランザクションを識別する ID 。ブロックが呼び出される前に
cancelAsyncTransaction:
に渡すことができ、ブロックの保留中の呼び出しをキャンセルします。 -
書込みトランザクション 内で指定されたブロックに含まれるアクションを非同期に実行します。 書込みトランザクションは
beginAsyncWriteTransaction:
を呼び出す場合と同様に非同期に開始され、デフォルトではブロックが完了した後にトランザクションは非同期にコミットされます。 ブロック内からcommitWriteTransaction
またはcancelWriteTransaction
を明示的に呼び出して、書込みトランザクションを同期にコミットまたはキャンセルすることもできます。宣言
Objective-C
- (RLMAsyncTransactionId)asyncTransactionWithBlock: (nonnull void (^)(void))block;
Swift
func asyncTransaction(_ block: @escaping () -> Void) -> RLMAsyncTransactionId
パラメーター
block
実行する アクション を含むブロック。
戻り値
非同期トランザクションを識別する ID 。ブロックが呼び出される前に
cancelAsyncTransaction:
に渡すことができ、ブロックの保留中の呼び出しをキャンセルします。 -
Realm と Realm によって管理される未処理のオブジェクトを最新データを指すように更新します。
Realm のバージョンが実際に変更された場合は、変更を反映するために Realm とコレクションの通知が送信されます。 コレクション通知はバックグラウンド スレッドで準備されるため、これには時間がかかる場合があります。 そのため、メイン スレッドでこのメソッドを呼び出すことは推奨されません。
宣言
Objective-C
- (BOOL)refresh;
Swift
func refresh() -> Bool
戻り値
Realm で更新が行われたかどうか。 実際にデータが変更されない場合でも、
YES
が返される場合があることに注意してください。 -
このプロパティを
YES
に設定すると、他のスレッドで変更が発生したときにこの Realm を自動的に更新します。YES
(デフォルト)に設定されている場合、他のスレッドで行われた変更は、変更がコミットされた後の実行ループの次のサイクルでこの Realm に反映されます。NO
に設定されている場合、最新データを取得するには、Realm で-refresh
を手動で呼び出して更新する必要があります。デフォルトでは、バックグラウンド スレッドにはアクティブな実行ループがないため、
autorefresh
がYES
に設定されている場合でも、最新バージョンに更新するには-refresh
を手動で呼び出す必要があることに注意してください。このプロパティが有効になっている場合でも、自動更新が行われる前にいつでも
-refresh
を呼び出して Realm を更新できます。書込みトランザクションでは、自動更新が無効になっている場合でも、Realm は常に最新バージョンに進み、コミット時にローカル通知が生成されます。
強力な参照がない Realm で
autorefresh
を無効にしても効果はなく、次に Realm が作成されるときにautorefresh
はYES
に戻ります。 これは通常、更新するものがないことを意味するため通常は関係ありません(管理対象のRLMObject
、RLMArray
、RLMResults
は、それらを管理する Realm への強力な参照を持っているため)、次のコマンドでRLMRealm.defaultRealm.autorefresh = NO
を設定することを意味します。 Realm オブジェクトの保存後のみ、application:didFinishLaunchingWithOptions:
は機能しません。デフォルトは
YES
です。宣言
Objective-C
@property (nonatomic) BOOL autorefresh;
Swift
var autorefresh: Bool { get set }
-
Realm によって管理されているすべての
RLMObject
、RLMResults
、RLMLinkingObjects
、RLMArray
を無効にします。Realm は、アクセスされるデータのバージョンに対して読み取りロックを保持するため、異なるスレッドで Realm に加えられた変更によって、この Realm が認識するデータが変更または削除されることはありません。 このメソッドを呼び出すと読み取りロックが解除され、ディスクで使用される領域は、ファイルを拡張するのではなく、後の書込みトランザクションで再利用できるようになります。 このメソッドは、以前に Realm から不要になったデータを読み込んだバックグラウンド スレッドで長時間のブロッキング操作を実行する前に呼び出す必要があります。
現在のスレッドでこの
RLMRealm
インスタンスから取得されたすべてのRLMObject
、RLMResults
、およびRLMArray
インスタンスは無効化されます。RLMObject
とRLMArray
は使用できません。RLMResults
は空になります。 Realm 自体は有効なままであり、次に Realm からデータが読み取られるときに、新しい読み取りトランザクションが暗黙的に開始されます。Realm からのデータを読み込まずに、または Realm からのデータを読み取る前に、このメソッドを複数回連続で呼び出すと、操作は実行されません。
宣言
Objective-C
- (void)invalidate;
Swift
func invalidate()
-
RLMThreadSafeReference
が最初に作成されたときに参照されたオブジェクトと同じオブジェクトを返しますが、このスレッドの現在の Realm では解決されたオブジェクトを返します。 参照が作成された後にこのオブジェクトが削除された場合はnil
を返します。警告
RLMThreadSafeReference
オブジェクトは最大 1 回で解決される必要があります。RLMThreadSafeReference
を解決しないと、参照が再割り当てされるまで、Realm のソース バージョンが固定されます。 参照が複数回解決された場合は例外がスローされます。警告
書込みトランザクション (write transaction) 内で を呼び出せません。
注意
ソース Realm がこれよりも後のバージョンであった場合は、この Realm を更新します。
詳細は、次を参照してください:
宣言
Objective-C
- (nullable id)resolveThreadSafeReference: (nonnull RLMThreadSafeReference *)reference;
パラメーター
reference
この Realm で解決するスレッド定義オブジェクトへのスレッドセーフな参照。
-
Realm にオブジェクトを追加します。
追加されると、このオブジェクトは Realm によって管理されると見なされます。
RLMRealm
とRLMObject
のサブクラスではobjectsWhere:
セレクターを使用して検索できます。追加すると、このオブジェクトが参照するすべての子関係も Realm にまだ含まれていない場合は、Realm に追加されます。
オブジェクトまたは関連するオブジェクトがすでに別の Realm によって管理されている場合は、例外がスローされます。 管理対象オブジェクトのコピーを別の Realm に挿入するには、
-[RLMObject createInRealm:withObject:]
を使用します。追加するオブジェクトは有効である必要があり、Realm から過去に削除されたことはありません(
isInvalidated
はNO
である必要があります)。警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
パラメーター
object
この Realm に追加するオブジェクト。
-
コレクション内のすべてのオブジェクトを Realm に追加します。
これは、コレクション内のすべてのオブジェクトに対して
addObject:
を呼び出すのと同じです。警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
詳細は、次を参照してください:
addObject:
宣言
Objective-C
- (void)addObjects:(nonnull id<NSFastEnumeration>)objects;
Swift
func addObjects(_ objects: any NSFastEnumeration)
パラメーター
objects
Realm に追加する Realm オブジェクトを含む、
NSArray
、RLMArray
、RLMResults
などの列挙可能なコレクション。 -
既存のオブジェクトを Realm に追加またはアップデートします。
提供されるオブジェクトには、指定されたプライマリキーが必要です。 Realm 内に同じプライマリキー値を持つオブジェクトが存在しない場合は、オブジェクトが挿入されます。 それ以外の場合、既存のオブジェクトが変更された値で更新されます。
addObject:
と同様に、オブジェクトはすでに別の Realm で管理できません。 値を別の Realm にコピーするには、-[RLMObject createOrUpdateInRealm:withValue:]
を使用します。object
に nil の値を持つプロパティまたは KV 値があり、かつアップデートされる既存のオブジェクトの null 可能なプロパティに対応する場合、その null 可能なプロパティは nil に設定されます。警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
宣言
Objective-C
- (void)addOrUpdateObject:(nonnull RLMObject *)object;
Swift
func addOrUpdate(_ object: RLMObject)
パラメーター
object
追加または更新するオブジェクト。
-
コレクション内のすべてのオブジェクトを Realm に追加または更新します。
これは、コレクション内のすべてのオブジェクトに対して
addOrUpdateObject:
を呼び出すのと同じです。警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
詳細は、次を参照してください:
addOrUpdateObject:
宣言
Objective-C
- (void)addOrUpdateObjects:(nonnull id<NSFastEnumeration>)objects;
Swift
func addOrUpdateObjects(_ objects: any NSFastEnumeration)
パラメーター
objects
Realm 内で追加または更新される Realm オブジェクトを含む、
NSArray
、RLMArray
、RLMResults
などの列挙可能なコレクション。 -
Realm から 1 つ以上のオブジェクトを削除します。
これは、コレクション内のすべてのオブジェクトに対して
deleteObject:
を呼び出すのと同じです。警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
詳細は、次を参照してください:
deleteObject:
宣言
Objective-C
- (void)deleteObjects:(nonnull id<NSFastEnumeration>)objects;
Swift
func deleteObjects(_ objects: any NSFastEnumeration)
パラメーター
objects
Realm から削除するオブジェクトを含む、
NSArray
、RLMArray
、RLMResults
などの列挙可能なコレクション。 -
Realm からすべてのオブジェクトを削除します。
警告
このメソッドは、書込みトランザクション中にのみ呼び出されます。
詳細は、次を参照してください:
deleteObject:
宣言
Objective-C
- (void)deleteAllObjects;
Swift
func deleteAllObjects()
-
このRealmのアクティブなサブスクリプションを表します。これを使用して、Flexible Sync サブスクリプションの追加、削除、更新、検索に使用できます。 ローカルまたはパーティションベースで構成されたRealmからサブスクリプションを取得すると、例外がスローされます。
宣言
Objective-C
@property (nonatomic, readonly, nonnull) RLMSyncSubscriptionSet *subscriptions;
Swift
var subscriptions: RLMSyncSubscriptionSet { get }
-
指定されたローカル URL の Realm のスキーマ バージョンを返します。
宣言
Objective-C
+ (uint64_t)schemaVersionAtURL:(nonnull NSURL *)fileURL encryptionKey:(nullable NSData *)key error:(NSError *_Nullable *_Nullable)error;
パラメーター
fileURL
Realm ファイルへのローカル URL。
key
ファイルの暗号化に使用される 64 バイトのキー、または暗号化されていない場合は
nil
。error
エラーが発生した場合、 には問題を説明する
NSError
オブジェクトが返されます。 エラーの可能性を考慮していない場合は、NULL
を渡します。戻り値
fileURL
の Realm のバージョン。バージョンが読み取れない場合はRLMNotVersioned
の Realm のバージョン。 -
指定されたパスにある Realm で指定された Realm 構成の移行ブロックを実行します。
このメソッドは Realm を初めて開くときに自動的に呼び出され、明示的に呼び出す必要はありません。 このメソッドを呼び出すことで、移行がいつどのように実行されるかを正確に制御できます。
詳細は、次を参照してください:
RRMMigration
宣言
Objective-C
+ (BOOL)performMigrationForConfiguration: (nonnull RLMRealmConfiguration *)configuration error:(NSError *_Nullable *_Nullable)error;
Swift
class func performMigration(for configuration: RLMRealmConfiguration) throws
パラメーター
configuration
Realm のオープンと移行に使用される Realm 構成。
戻り値
移行の適用中に発生したエラー(存在する場合)。
-
なし
+defaultRealm、+realmWithConfiguration:、または +realmWithURL: を使用します。
RMRealm インスタンスは Realm によって内部的にキャッシュされ、直接作成することはできません。
RMRealm への参照を取得するには、
+[RLMRealm defaultRealm]
、+[RLMRealm realmWithConfiguration:error:]
、または+[RLMRealm realmWithURL]
を使用します。宣言
Objective-C
- (nonnull instancetype)init;
-
なし
+defaultRealm、+realmWithConfiguration:、または +realmWithURL: を使用します。
RMRealm インスタンスは Realm によって内部的にキャッシュされ、直接作成することはできません。
RMRealm への参照を取得するには、
+[RLMRealm defaultRealm]
、+[RLMRealm realmWithConfiguration:error:]
、または+[RLMRealm realmWithURL]
を使用します。宣言
Objective-C
+ (nonnull instancetype)new;
-
この Realm で使用される RMSyncSession を取得します。 これが同期された Realm でない場合は nil になります。
宣言
Objective-C
@property (nonatomic, readonly, nullable) RLMSyncSession *syncSession;
Swift
var syncSession: RLMSyncSession? { get }