2017-12-14 17 views
1

レルムデータベースを使用しましたが、JSONレスポンスのデータをレルムに格納したいとします。私のJSONのresoponseは、私は2つのテーブル最初のものはOfflineResponseであり、もう一つは初めてOfflineResponseはデータを持っていない場合は、それがOfflineDepepartmentResponseにデータを格納し、OfflineDepartmentResponseである必要があり、何かのように、レルムテーブルにnullデータが表示される

[ 
    { 
     "i_id": "108", 
     "year_id": "122", 
     "departments": [ 
      { 
       "id": 164, 
       "name": "Main Department", 
       "classrooms": [ 
        ...... 
       ] 
      } 
     ] 
    } 
] 

ですまた、OfflineDepartmentResponseで、今すぐ手動で部署を追加したいと思っています。OfflineDepartmentResponse、以下の画像のようにヌルの行を作成します。

0ここで

Database Image

は、私は、すべてのデータセットがある最初に書かれているコード、

int i_id = Integer.parseInt(offlineUserListObject.get("i_id").toString()); 

    if (realm.where(OfflineUserResponse.class).equalTo("i_id", i_id).findAll().size() > 0) { 
     //This is where I want to store data manually 
     realm.copyToRealm(realm.createObjectFromJson(OfflineDepartmentResponse.class, departmentObj)); 
    }else{ 
     //This data set for the first time and it is working fine. 
     JSONObject obj = new JSONObject(); 
     obj.put("offlineUserList", response); 
     realm.copyToRealm(realm.createObjectFromJson(OfflineResponse.class, obj)); 
    } 

はそれが意味をなすか、私は任意の明確化

答えて

0

のために知らせないの希望でありますこのコードを試すことができます:

int i_id = Integer.parseInt(offlineUserListObject.get("i_id").toString()); 

if (realm.where(OfflineUserResponse.class).equalTo("i_id", i_id).findAll().size() > 0) { 
    realm.executeTransaction(new Realm.Transaction() { 
       @Override 
       public void execute(Realm realm) { 
         realm.copyToRealm(realm.createObjectFromJson(OfflineDepartmentResponse.class, departmentObj)); 
       } 
      }); 
}else{ 
    JSONObject obj = new JSONObject(); 
    obj.put("offlineUserList", response); 

    realm.executeTransaction(new Realm.Transaction() { 
       @Override 
       public void execute(Realm realm) { 

       } 
      }); 
} 
+0

「realm.executeTransaction(new Realm.Transaction())」の違いは何ですか?あなたは詳細を教えてくれますか? – Kuls

+0

レルム・データベース内の何かをコピーまたは更新する場合は、データベース内の何かを更新またはコピーするというサインを与えなければなりません。そして、その記号は 'realm.executeTransaction()'です。別の方法もあります。コピーする前に 'realm.beginTransaction()'を追加し、realmデータベースにオブジェクトをコピーした後に 'realm.commitTransaction()'を追加することもできます。 –

+0

私のメソッドに 'realm.beginTransaction()'と 'realm.commitTransaction()'をすでに追加しました。 – Kuls

関連する問題