Met4licのあけくれ帖

日常とか、勉強したこととかいろいろ書いていくつもりのブログです

RealmのResultsオブジェクト削除後、順番がおかしい

どうもこんばんは?おはようございます?Met4licです。
久々に技術的なことを書きます。

最近はRealmを使っています。その中でちょっと困った出来事が。。。

DB内のデータを削除すると順番がぐちゃぐちゃになる

これです。DB内のデータを扱ううえで、必要のなくなったデータは消していく処理を書いていたのですが、
そのデータを削除した後、再度DBを読み込むと、、、あれれれれれ??????なんか順番ぐっちゃぐちゃなんですが????
というかよく見ると、最後にあったものが削除した場所に来て、そのほかは元の順番通り、というような感じですね。
わかりづらいので例を挙げます。

元々のデータは
データ1,データ2,データ3,データ4
となっています。

ここで「データ1」を削除したとします。
すると、Realm.Resultsに返ってくる順序は次に呼び出すと
データ4,データ2,データ3
という順番になってしまうみたいです。

同様に、「データ2」を削除した場合は
データ1,データ4,データ3
という順番になるようです。

これがどのようなことが原因で起こっているのか見当は付きませんが、
ひとまず、こんなことがあるよ、気を付けてね、っていう記事として参考にして下さい。
githubにissue投げてみたけど、これ解決方法あったら申し訳ねぇって感じです。

なにかしら解決方法があったら解決したいのだが。。。。

追記

削除した後の結果でも、sort()を使うことでこの問題を解決しました。
通常

    Realm realm = getDefaultInstance();
    RealmQuery<MyClass> query = realm.where(MyClass.class);
    RealmResults<MyClass> realmResults = query.findAll();

とするところを最後の部分を、

    Realm realm = getDefaultInstance();
    RealmQuery<MyClass> query = realm.where(MyClass.class);
    RealmResults<MyClass> realmResults = query.findAll().sort("id",Sort.ASCENDING);

として対応しました。