2016-09-30 8 views
1

時々、私のアプリは一度に多くのレルムレコードを追加します。
私はそれらを一貫して同じ順序で保つことができる必要があります。すぐに挿入されたレルムレコードの並べ替え

The documentation recommends that I use NSDate:自動インクリメントプロパティの

別の一般的な動機は、挿入の順序を保持することです。場合によっては、リストにオブジェクトを追加するか、NSDate()の既定値でcreatedAtプロパティを使用してこれを行うことができます。

レコードが時々そうすぐに追加されますので、日付は特にだけ精度にレルム店NSDateを考慮すると、必ずしも一意ではありません。

ドキュメントには何か提案がありませんか?

ドキュメントにレコードをすばやく追加することを検討していなかったのでしょうか?
もしそうならば、Intpositionのプロパティを保持し、新しいレコードを追加する瞬間に最後のレコードを常に照会して、連続した位置を確保することをお勧めしますか?

しかし、このような場合に最後のレコードを照会すると、書き込みを追加してファイナライズしない限り、前のレコードは返されません。レコードをたくさん追加する必要がある場合は無駄です。

その後、バッチ作成ロジックが必要になりますが、これは残念です。

答えて

2

しかし、レコードが非常に迅速に追加されることがあるため、レルムがNSDateを2番目の精度でしか保存しないことを考慮すると、日付は必ずしも一意ではありません。

日付精度の制限は、Realm v0.101で取り上げられました。レルムは、NSDateより精度の高い日付を表すことができるようになりました。

また、あなたは、レコードの多くを追加する必要がある場合は無駄である書き込みを添加し、確定していない限りしかし、このような場合の最後のレコードを照会すると、前のレコードを返しません。

書き込みトランザクション中に追加したデータを表示するために、同じスレッド上のクエリに対して書き込みトランザクションをコミットする必要はありません。

ドキュメントには何か提案がありませんか?

最初の提案をスキップしました。オブジェクトをListに追加しました。レルム内のリストは本質的に順序付けされているので、独自の順序付けされた値を作成する方法を見つける必要はありません。新しいオブジェクトをリストに追加するだけで、リストの順序に頼ってオブジェクトが追加された順序を決定します。これは、増分フィールドが異なるデバイス上で重複を生成し、タイムスタンプが信頼できない場合があるため、Realm Mobile Platformの同期機能を使用するときに安全であるという利点もあります。

+0

ああ、私はNSDateの精度制限が削除されたことに気づいていませんでした。 'List'提案については、私が変更を観察できる' Results'オブジェクトを持っているので、私のケースではうまくいかないと思っています。私が知る限り、リストの変更は観測できません。また、 'List'を所有する' Object'のクエリを作成する場合は、通知を受け取りますが、その所有者オブジェクトが更新され、その挿入/削除/更新ではないことを通知するだけです'List'プロパティです。 – solidcell

+1

'List'は' Results'と同じ方法で観測可能です。 – bdash

+0

ああクール、私は別のショットを与える必要があります。助けてくれてありがとう! – solidcell

関連する問題