RESTfulAPI私は大きなデータセットを取得しています。レルムトランザクションの処理
func addObjectType(object: ObjectType){
// Check for existence of data
if (realm.object(ofType: ObjectType.self, forPrimaryKey: object.id) == nil) {
// Persist your data easily
try! realm.write {
realm.add(object)
}
}
}
アプリがローカルにデータを削除する機能を持っている:私はレルムと、次の呼び出しを使用してローカルに永続化しています。私は次としてそれを実装している:
func deleteAllData() {
if(!realm.isEmpty){
do{
if(!realm.isInWriteTransaction) {
realm.beginWrite()
realm.deleteAll()
try! realm.commitWrite()
}
}
NotificationCenter.default.post(name: Notification.Name("updateUI"), object: nil)
}
}
をしかし、私は以下を参照してくださいレルムのドキュメントを見て:
は、レルムが書き込みトランザクションに現在あるかどうかを示します。
は、単にこのプロパティをチェックして、オブジェクトが作成、更新、または削除する必要があるときに、書き込みトランザクション を起動しないでください警告
。 を実行すると、多数の書き込みトランザクションが作成され、 のパフォーマンスが低下する可能性があります。その代わり、常に単一のトランザクション中に複数の更新を実行することをお勧めします。
私の実装は正しいですか?
、私はいくつかのチェックをしないのですという感じ..
書き込み/更新の書き込みが完了した後は、必ず 'commitWrite'する必要があります。 'isInWriteTransaction'をチェックする必要はありません。レルムは、パフォーマンスを低下させるのでチェックしないでください。 – Tj3n
新しい書き込みを介してオブジェクト? (最初のメソッドaddObjectTypeを参照してください) – mm24
書き込みクロージャを使用する場合は呼び出す必要はありませんが、書き込み終了があるため、ほとんどの場合、 'isInWriteTransaction'のチェックは非常に注意してください – Tj3n