RRMMigration

Objective-C

@interface RLMMigration : NSObject

Swift

@_nonSendable(_assumed) class RLMMigration : NSObject

RLMMigration インスタンスは、スキーマ移行を容易にするために情報をカプセル化します。

Realm のバージョンを更新するときに、 RLMMigrationインスタンスはユーザー定義のRLMMigrationBlockブロックに渡されます。 このインスタンスは、古いデータベース スキーマと新しいデータベース スキーマ、Realm 内のオブジェクトへのアクセスを提供し、移行中に Realm を変更する機能を提供します。

プロパティ

  • 古いRLMSchemaを返します。 これは、移行が適用される前の Realm を記述するスキーマです。

    宣言

    Objective-C

    @property (nonatomic, readonly) NS_REFINED_FOR_SWIFT RLMSchema *oldSchema;
  • 新しいRLMSchemaを返します。 これは、移行が適用された後の Realm を記述するスキーマです。

    宣言

    Objective-C

    @property (nonatomic, readonly) NS_REFINED_FOR_SWIFT RLMSchema *newSchema;

移行中のオブジェクトの変更

  • Realm 内の指定されたタイプのすべてのオブジェクトを列挙し、各オブジェクトの古いバージョンと新しいバージョンの両方を提供します。 ブロック内では、オブジェクト プロパティにはキー付きサブスクリプションを使用してのみアクセスできます。

    警告

    返されるすべてのオブジェクトは現在の移行に固有のタイプであり、 classNameにキャストしないでください。 代わりに、これらをRLMObjectとして扱い、キー付きサブスクリプションを使用してプロパティにアクセスします。

    宣言

    Objective-C

    - (void)enumerateObjects:(nonnull NSString *)className
                       block:(nonnull RLMObjectMigrationBlock)block;

    パラメーター

    className

    列挙するRLMObjectクラスの名前。

  • 移行されている Realm にタイプclassNameRLMObjectインスタンスを作成して返します。

    value引数はオブジェクトにデータを入力するために使用されます。 キーと値に準拠したオブジェクト、 NSJSONSerializationのメソッドから返された配列または辞書、または管理されているプロパティごとに 1 つの要素を含む配列にすることができます。 必須 プロパティが存在せず、それらのプロパティがデフォルト値で定義されていない場合は、例外がスローされます。

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

    宣言

    Objective-C

    - (nonnull RLMObject *)createObject:(nonnull NSString *)className
                              withValue:(nonnull id)value;

    パラメーター

    className

    作成するRLMObjectクラスの名前。

    value

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

  • 移行中に Realm からオブジェクトを削除します。

    このメソッドは、 -[enumerateObjects:block:]に渡されるブロック内から呼び出すことが許可されます。

    宣言

    Objective-C

    - (void)deleteObject:(nonnull RLMObject *)object;

    パラメーター

    object

    移行される Realm から削除されるオブジェクト。

  • 指定された名前のクラスのデータを削除します。

    指定されたクラスのすべてのオブジェクトが削除されます。 RLMObjectサブクラスがプログラムに存在しなくなると、クラスの残りのメタデータは Realm ファイルから削除されます。

    宣言

    Objective-C

    - (BOOL)deleteDataForClassName:(nonnull NSString *)name;

    パラメーター

    name

    削除するRLMObjectクラスの名前。

    戻り値

    削除するデータがあったかどうかを示すブール値。

  • 指定されたクラスのプロパティの名前をoldNameからnewNameに変更します。

    宣言

    Objective-C

    - (void)renamePropertyForClass:(nonnull NSString *)className
                           oldName:(nonnull NSString *)oldName
                           newName:(nonnull NSString *)newName;

    パラメーター

    className

    プロパティの名前を変更するクラスの名前。 このクラスは、古い Realm スキーマと新しい Realm スキーマの両方に存在する必要があります。

    oldName

    名前を変更するプロパティの古い永続プロパティ名。 新しい Realm スキーマによって定義されるクラス内に、この名前のプロパティが存在しないようにしてください。

    newName

    名前を変更するプロパティの新しい永続プロパティ名。 古い Realm スキーマによって定義されているクラス内に、この名前のプロパティが存在しないようにしてください。