3

RealmSwift には、オブジェクト、メッセージがあります。

ObjectMapper を使用して、そのプロパティを REST サービスからマップしています。dynamic var read:Bool = falseまた、ユーザーがメッセージを読んだかどうかを追跡するために、ローカル プロパティも必要です。

try! realm.write({
    m.read = true
})

Realm Browser で更新された値を確認できます。

ただし、サービスからオブジェクトをフェッチするたびに、変数はデフォルト値にリセットされます。私は何か間違ったことをしていると確信していますが、それが RealmSwift なのか ObjectMapper なのかはわかりません。

何か案が?

4

2 に答える 2

0

なぜこれが起こっているのかについての私の仮説は、サーバーからオブジェクトをフェッチすると、JSON を受け取り、それを新しいオブジェクトにマップするためです (以前に設定したオブジェクトとはMessage異なります)。これらのメッセージ オブジェクトは で初期化され、レルムに永続化されると、値は以前に保存された値を上書きします。Messageread = trueread = falsefalsetrue

(私の知る限り、ObjectMapper では、既存のモデル オブジェクトを取得して、その値を新しい JSON 値で「更新」または「再入力」することはできません。)

いくつか試してみることができます。readJSON 応答から作成したすべてのの値を取得し、新しいオブジェクトMessageの の値を更新してから、それらをレルムに保存することができます。もう 1 つのオプションは、この情報を帯域外に保存することです。ユーザー側の情報 (メッセージ ID とフラグなど)だけを含む新しいオブジェクト クラスを作成し、それらをオブジェクトと一緒にレルムに保存します。readMessagereadMessage

于 2016-06-20T17:41:41.957 に答える