2016-09-07 2 views
3

レルムはすでに書き込みトランザクション中です。レルムはすでに書き込みトランザクションにあります

どうすればこのエラーを回避できますか?レクチャーが書かれた牽引であることを確認する方法はありますか?レルムが書込みトランザクションの場合は最初にクローズし、次に他の作業を行います。今、このエラーが発生した後、 "レルムはすでに書き込みトランザクション中です。"レルムに関連する他のタスクも機能しません。

答えて

3

レルムの経験則は、いつでもRLMRealmで開いている書き込みトランザクションの1つだけです。このエラーが発生した場合は、ロジックを再考する必要があります。同じスレッド上で既に開いているRLMRealmで2番目の書き込みトランザクションを意図的に開こうとするべきではありません。別のスレッドで行うのは問題ありませんが、最初のトランザクションが完了するまで、2回目の書き込みトランザクションがオンになっているスレッドはブロックされます。

あなたの実装には、正しく設定されていないものがある場合は、あなたが完了したと思われるトランザクションにエラーがあり、開いている可能性があります。セバスチャンは言ったように、-[RLMRealm inWriteTransaction]でこれをチェックすることができますが、この場合、なぜそのようなことが起こっているのかを確かめるためにコードをバックトラックする必要があります。

1

同じスレッドで書き込みタスクを実行している場合は、NSMutableArrayに追加してからaddOrUpdateObjectsFromArrayを使用します。反対側では、realmオブジェクトにinWriteTransactionを発射することによって書き込み競合を回避することができます。

関連する問題