問題タブ [realm-java]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Gson で Realm を使用する
私はjson
フィールドで持っています_id
私の Realm モデルでは、次の@SerializedName
属性を使用します。
json を保存しようとすると、次のようになります。
realm.createOrUpdateObjectFromJson(User.class, json)
フィールド_id
を解析できず、データベースで ID = 0 のレコードが作成されました
@SerializedName
属性を使用したドキュメント
この場合、String のデフォルト値は null であるため、データベースからjson = "{ _id : 1, role: 'user' }"
ユーザーを削除するだけです。name
したがって、おそらく私は属性を間違って使用しています。createOrUpdateObjectFromJson
json の保存方法 (など)を扱うときに属性を考慮する方法は?
realm - realm.close() の代わりに realm=null を設定するとどうなりますか
さんのコメントよりrealm.isClosed()
- メモリやファイル ディスクリプタをリークしたり、Realm ファイルのサイズを測定不能に大きくしたりしないように、処理が完了したら Realm インスタンスを閉じることを常に忘れないことが重要です。
realm.close()
では、メソッドを使用せずに set を 使用するとどうなりますかrealm=null
。
android - タグのレルム設計を実装する
Realm が NoSQL であり、結合操作をサポートしていないことは知っています。現在、次のようなテーブルを持つMySQLデータベースがあります-
このタイプ テーブル構造のレルム モデルを実装するにはどうすればよいですか?
java - Realm createOrUpdateAllFromJson は永続化せずに RealmModel オブジェクトを作成しますか?
私は、開発中の Android アプリでレルム Java を非常にうまく使用しています。私はサーバー API から配列を受け取り、レルムはメインのレルム インスタンス オブジェクトJSONObject
の便利な方法で配列を忠実に取り込みます。createOrUpdateAllFromJson
この典型的なフローは次のようになります。
ただし、特定のユースケースが完了したらすぐにこれらを破棄したいため、実際にはレルムに保存せずMyCoolModel
に、同じオブジェクトの一時的なメモリ内配列を作成したい状況に遭遇しました。 . 私には似ていて、その兄弟メソッドはメインレルムインスタンスオブジェクトでのみ利用できます。createOrUpdateAllFromJson
これをオブジェクト モデルの作成者にとって便利な方法で利用する方法はありJSON
ますか? または、手動/自動の JSON 解析を使用して別の実装を作成する必要がありますか?
android - Androidで既存のレルムデータベースに暗号化を適用する方法は?
この質問と同様の質問をしましたが、まだこれを理解できません。
以前はSQLite
、Android アプリに使用していました。事前入力された Sqliteデータベースのサイズは約 15 MB です。レコードを新しい Realm データベースにコピーするための一時的な Android アプリを作成しました。この新しい Realm データベースのサイズは約 150 MB でした。次に、Mac の Realm ブラウザーで開き、圧縮しました。サイズが 15 MB に縮小されました。
しかし、新しいデータベースを作成してsqlite行をそこにコピーするときに暗号化を使用すると、サイズは約 150 MB になります。16進パスワードを使用して開くと、正常に開きます。次に、以前のように圧縮しました->サイズを通常の15 MBに戻しました。しかし、理由はわかりませんが、暗号化は現在削除されています。
これに対抗するには、1つの解決策しか考えられません。すでに圧縮されている Realm データベースに暗号化を適用できれば。しかし、私は理解できませんでした.Androidでこれを行う方法は?
編集 - いくつかの関連部分 -
パート1 -
パート2 -
暗号化データベースを圧縮データベースに変換する場合 -> このレルム データベースを Android エミュレーターから取得しました -> レルム ブラウザで開きました (16 進数のパスワードを使用) -> 圧縮 (ただし、この新しく作成された圧縮データベースは暗号化されていません)
PS - 私の質問が説明的であることは知っていますが、これを行う方法が見つかりませんでした。
android-sqlite - リレーションシップをレルムに保存する (Java)
Realm を使用して Android アプリにオブジェクトを保存し始めています。これが私が保存しようとしているものの例です:
アイテムを表示する複数のリストがあります。リストの数は増え続ける可能性があります (ユーザーはできるだけ多くのリストを作成できます。
ユーザーが「Best」というリストを作成したとしましょう。「ベスト」リストを表示しているときに、API からgetItems("Best")
取得するを呼び出します。List<Items>
ここで、このリストを保存する方法を理解する必要があります。SQLite の世界では、たとえば、新しいテーブル「custom_list_best」を作成します。これは、リストの一部であるすべての Item.id の単一のリストです。また、すべての個別のアイテムを含む「アイテム」テーブルもあります。ベスト リストのアイテムを取得するには、ベスト テーブルとアイテム テーブルの両方で結合クエリを実行するだけです。
Realm の世界では、Realm がどのように機能するか、モデルを構築する最善の方法は何かを理解しようとしています。
私は当初、次のようなオブジェクトを作成できると考えていましたCustomList
。
次に、を保存しRealmList<CustomList>
ます。しかし、唯一の問題は、すべてのアイテムに対してクエリを実行できるようにしたいということです。RealmList<Item>
そのため、レルムにも保存する必要があります。この場合、レルムはどのように機能しますか? 別々に保存してからRealmList<Item>
それぞれを保存すると、RealmList<CustomList>
データは複製されませんか?
代わりに、代わりにこれを行うことで、これを手動で処理する必要があります。
そして、Item.class
上記のオブジェクトから itemIds に itemId を持つオブジェクトをクエリしますか?
realm - レルムの最初の n 行を削除する方法
ユーザーが最近表示した項目を格納するRecentViewItemというテーブルがあるとします。他のすべてのアイテムを削除して、最近表示した最初の 10 個のアイテムのみを保持したいと考えています。私のクエリは次のようなものです:
realm - レルムからメモリ内の最初の n 行を取得する方法
copyFromRealmメソッドを使用して、メモリ内の最初の 10 行または n 行のみを Java リストとして取得したいと考えています。次のように考えてください。
更新: RealmResult は AbstractList を拡張するため -