2016-11-30 1 views
2

開発中のAndroidアプリでrealm Javaを使用しています。私はサーバAPIからJSONObjectの配列を受け取り、realmはmain realmインスタンスオブジェクト上の便利なcreateOrUpdateAllFromJsonを通してそれらを丁寧に取り込みます。Realm createOrUpdateAllFromJsonは、永続化せずにRealmModelオブジェクトを作成しますか?

このため、一般的な流れは以下のようになります。しかし、私は今、私はことなく、同じMyCoolModelオブジェクトの一時的な、メモリ内の配列を作成したいような状況に遭遇しました

// get API results into JSONArray jsonObjArrs variable 
realm.beginTransaction(); 
realm.createOrUpdateAllFromJson(MyCoolModel.class,jsonObjArrs); 
realm.commitTransaction(); 

特定のユースケースが完了するとすぐにこれらを取り除きたいので、実際にそれらをRealmに保存します。私にはcreateOrUpdateAllFromJsonのように見え、その兄弟メソッドはメインレルムインスタンスオブジェクトでのみ利用可能です。

この便利なツールをオブジェクトモデルの作成者に利用する方法はありますか?または手動/自動化されたJSON解析を使用して代替実装を作成する必要がありますか?

答えて

0

私はの「メモリー・レルムで」機能を使用して終了レルム。私はちょうど使い捨てのデータのために個別に作成されたインスタンスとしてこれを使用

public Realm unpersistedRealm(){ 
    RealmConfiguration myConfig = new RealmConfiguration.Builder() 
      .name(UUID.randomUUID().toString()) 
      .inMemory() 
      .build(); 
    return Realm.getInstance(myConfig); 
} 

:私は名前として新しいUUIDで、新しいメモリー内のレルムのインスタンスを返す単純な関数を書きました。私は通常のinMemoryRealmInstance.createOrUpdateAllFromJson()コールを使用してオブジェクトを作成し、完了した時点でメモリ内のインスタンスを閉じます。私はフラグメントのonCreateView()コール中にインスタンスを作成し、領域を閉じるにはonDestroyView()にします。私MyCoolModelキーフィールドに@PrimaryKey使用して構築された重複排除では

  • :(メモリ内のインスタンスが)レルムを使用し続ける

    私に以下の明確な利点を提供します。私が以前考えていた手作業のArrayList<MyCoolModel>のアプローチを使用する場合、私は手動で重複を除去しなければならず、Realmが既に私のために解決した他の頭痛が心配です。

  • クエリベースの並べ替え、フィルタリングなど
1

JSON構造のメモリ内オブジェクトが必要な場合は、GSON、Jackson、Moshiなどの標準JSONパーサーを参照する必要があります。レルムにはこれを組み込む方法がありません。

+0

私もそう思っていましたが、確認していただきありがとうございます。 –

+0

In Memory Realm機能を使用した私の解決策に関する考えはありますか?代わりにArrayListを使用する方法と比べてどうですか? –

1

途方もなくハックソリューションは

realm.beginTransaction(); 
realm.createOrUpdateAllFromJson(MyCoolModel.class,jsonObjArrs); 
List<MyCoolModel> list = realm.copyFromRealm(realm.where(MyCoolModel.class)).findAll()); 
realm.cancelTransaction(); 
return list; 

だろう。しかし、あなたが(ETCやGSON /モシ/)LoganSquareを使用して方がいいでしょう

関連する問題