オプションのNSDate
プロパティexpiryDate
を持つRealmモデルがあります。このモデルには、後でオブジェクトを使用できなくなる日付が格納されています。レルム;
このプロパティは、expiryDate
が必要なように変更する必要があります。そこには複数のバージョンのアプリケーションがあるので、データレイヤーにある各オブジェクトのexpiryDate
プロパティが設定されているかどうかをチェックする機能を持たないようにしたい場合は、それをデフォルト値に設定します。私はこの変更が設定されていないexpiryDate
持つすべての以前に保存されたオブジェクトは、NSDate().dateByAddingSeconds(SomeMaxExpiryDateInSeconds)
に設定されることを意味します
dynamic var expiryDate: NSDate = NSDate().dateByAddingSeconds(SomeMaxExpiryDateInSeconds)
で
dynamic var expiryDate: NSDate?
を置き換えるために、私たちのスキーマを更新することを計画
とレルムに応じて保存されますか?または、このプロパティはアクセスされるたびに再計算されますか?
これは良い解決策であり、すでに私が考えていることです。この質問の中で述べたように、コードベースと冗長コードにコードを追加するので、このようなメソッドを使用したくありません。 iOS 9がどこにでも散っているのとほぼ同じです。同じ問題が当てはまります。問題を解決するために動的変数をデフォルト値で更新できますか? –
残念ながら、Realmプロパティをオプションから非オプションに変換する場合は、移行を実行する必要があります。コード匂いのように見えて申し訳ありません。私たちは通常、RealmのConfigurationsファイルをConstantsファイルに置きます。そのため、コードベースには直接アクセスしないようにします。 'expiryDate'をオプションとして残しておくことができれば、この事実の後に作成された新しいオブジェクトのデフォルト値を変更することはできますが、' nil'の古いオブジェクトに対しては解決策が必要になります。 – TiM
移行の代わりに、 'nil'期限の日付オブジェクトを持つすべてのオブジェクトに対してクエリを実行し、それらをワンオフとして更新することができます。 – TiM