2016-04-16 11 views
0

汎用レルムラッパーを実装しようとしています。だから、私はそのクラスを追加/更新するか取得するオブジェクトを渡すことができます。領域のブラウザを使用してデータを正しく保存していることを確認していますが、getAllクエリを実行すると、正しいデータ構造で正しい量の配列が返されますが、すべてのフィールドはデフォルト値またはnullになります。Cantがrealmからデータを正しく取得する

@Override 
public void putAll(Collection<RealmObject> realmModels) { 
    mRealm = Realm.getDefaultInstance(); 
    mRealm.beginTransaction(); 
    mRealm.copyToRealmOrUpdate(realmModels); 
    mRealm.commitTransaction(); 
} 

GetAllRealmModels(UserRealmModel)::(UserRealmModel)私も試した

@Override 
public RealmResults getAll(Class clazz) { 
    return Realm.getDefaultInstance().allObjects(clazz); 
} 

@Override 
public RealmResults getAll(Class clazz) { 
    return Realm.getDefaultInstance().where(clazz).findAll(); 
} 

clazz = UserRealmModelを

がRealmModelを追加: はここに私のコードです。クラス

出力:

GetAll Output in debugger

しかしいただきまし面白いスクリーンショットに示すように、デバッグビューで、toStringメソッドは、正しいデータを示していること!

ヘルプ私はあなたのためのレルムのドキュメントを経て

答えて

1

氏Zeyad、 :)をしてください。彼らはあなたの質問のためのサンプルとよく書かれた文書を持っています。 RealmObjectでAndroid Studioで時計を追加

彼らが言うには、

フィールドの値が表示されます。残念ながら、フィールド値が使用されないため、これらの値は間違っています。レルムはプロキシオブジェクトをシーンの背後に作成し、レット内の永続データにアクセスするためにゲッターとセッターをオーバーライドします。いずれかのアクセサーのウォッチを追加すると、正しい値が得られます。デバッガ上記画像で

See the Image

3つの時計値、人物変数とperson.getName()とperson.getAge()アクセサがあるライン113上に停止しました。 107行目から111行目までのコードは、名前と年齢を変更することによってpersonインスタンスを変更します。これらの値は、トランザクション内で保持されます。デバッガが現在一時停止されている113行目で、Person Watchインスタンスがフィールド値を報告していて、それらが間違っています。 person.getName()およびperson.getAge()のアクセサーを使用するウォッチ値は、正しい値を報告します。

.toString()メソッドは正しい値を出力しますが、ウォッチパネルは(RealmObjectである変数を見ているときは)表示しませんのでご注意ください。

Read More Here

それが役に立てば幸い!

+0

ありがとうございます。レルムオブジェクトからの結果をビューモデルにキャストしていたので、少し混乱していました。すべてのデータを失っていました –

関連する問題