2016-08-25 4 views
3

Realmで簡単なクエリを実行し、MyModelオブジェクトのリストを取得し、後でそれを私のアプリのどこかで使用する必要があります。レルムを照会すると、各オブジェクトにヌル値がありますが、のtoStringは期待値を返します。Androidレルム - findAllはnullパラメータを持つオブジェクトを返します

モデル:

@RealmClass 
public class MyModel extends RealmObject implements Serializable { 

public static final String KEY_MODEL = "key_myModel"; 

@PrimaryKey 
private int id; 
private String myStr; 
private int myInt; 

//.... getters and setters 

@Override 
public String toString() { 
    return "id = " + id 
      + "\nmyStr = " + myStr 
      + "\nmyInt = " + myInt; 
} 

} 

は私が価値保存するにはどうすればよい:

public static void storeModel(MyModel model) { 
     Realm realm = Realm.getDefaultInstance(); 
     realm.beginTransaction(); 
     realm.copyToRealm(model); 
     realm.commitTransaction(); 
    } 

をどのように取得しないオブジェクト:

public static RealmList<MyModel> getNewElementsFromIndex(int indexFrom) { 
     Realm realm = Realm.getDefaultInstance(); 
     RealmResults<MyModel> allValues = realm.where(MyModel).greaterThan("id", indexFrom).findAll(); 

     RealmList<MyModel> finalList = new RealmList<MyModel>(); 
     finalList.addAll(allValues.subList(0, allValues.size())); 
     return finalList; 
    } 

私はgetNewElementsFromIndex(値)を呼び出し私はアイテムのリストを取得しますが、このリストのすべてのアイテムは、 ameter myStr = nullおよびmyInt = 0

私は間違っていますか?

+0

'allValues'を返すのはなぜですか? –

+0

具体的な理由はありません...私はまだ同じ結果を持っています - >オブジェクト内のNULLパラメータ。 – Bugdr0id

+0

1.)あなたはRealmResultsを使うべきです2)。あなたは 'getInstance()'で開いたRealmインスタンスを閉じていません。3)あなたが記述したものは、文書化された動作です。 – EpicPandaForce

答えて

6

管理対象領域オブジェクトの場合、データはフィールドにコピーされず、プロキシgetter/setter呼び出しによって取得されます。

したがって、フィールドがnullであり、toString()が値を示すという事実は、完全に予想され、十分に文書化された動作です。

値を確認するには、ゲッターメソッドのウォッチを追加する必要があります。

documentationを参照してください。

関連する問題