2016-05-11 4 views
2

私のプロジェクトでは、リクエスト本体にレルムオブジェクトを送信する必要があります。この操作の前に、オブジェクト変数の値の一部を別の値に置き換える必要があります。SwiftでトランザクションなしでRealmオブジェクトを編集できますか?

しかし、サーバーからの応答が成功する前に、新しい値を保存する必要はありません。場合

私はそうエラー

'Attempting to modify object outside of a write transaction - call beginWriteTransaction on an RLMRealm instance first.' 

を得る変える上でトランザクションを開いていないとき、インスタントセーブせずにレルムオブジェクトを変更するにはどのような方法があるのではなく、ケースの成功に保存 '?

+0

私の答えをチェックし、それがあなたのために働くかどうかを教えてください。 – 2ank3th

+0

realmオブジェクトを複製して、要求のためにコピーされたオブジェクトを使用することができます – Godather

+0

私はそれについて考えましたが、そのトリックは - 現在、Realmオブジェクトのコピーを作成することはできません。問題を見る[リンク](https://github.com/realm/realm-cocoa/issues/3381) – TramPamPam

答えて

-1

realm.beginWrite()を使用してトランザクションを開始し、変更を加えることができます。サーバコールが成功した場合は、トランザクションrealm.commitWrite()をコミットするか、トランザクションrealm.cancelWrite()をキャンセルすることができます。

+0

もし私が正しく理解していれば、私はこのケースではサーバーへの私の要求に沿ってオープンなトランザクションを持っています。それは本当に悪い考えです。 – TramPamPam

+0

理想的には、DBとネットワークのDTOを別々にする必要があります。なぜこれは悪い考えですか? – 2ank3th

+0

別々のDBとネットワークのDTOはどういう意味ですか? 2つの異なるオブジェクト? – TramPamPam

関連する問題