2017-05-17 10 views
1

私はParseオブジェクト(よく、解析オブジェクトの配列)を持っています。私はオブジェクトのクローンを作成したいが、私が試したものすべてが失敗する...元のオブジェクト属性を変更すると、クローンの対応する属性も変更される。私はParse.Object.clone()を使用してオブジェクトの新しい配列を作成し、JSONに変更して深いクローンを実行しましたが、何も動作しませんでした。いくつかの研究の後、私はthisthisに出くわしましたが、これは本当の解決策を提供します。Clone Parse Serverオブジェクト

パーズオブジェクトを複製し、属性を完全に分離するのに良い方法はありませんか?

私は本質的に、複製されたバージョンに戻って保存されない「キャンセル」変更ボタンを持っています。

答えて

2

Parse.Object.cloneは、シャローコピーを返します。私は書かれており、このコードを使用しました深いコピー(完全に独立したオブジェクト)の場合:

var originalObject = ... 
var objectJSON = originalObject.toJSON(); 
delete objectJSON.objectId; // force it to be a new DB object if you save it 
var twin = new Parse.Object(object.className); 
twin.set(objectJSON); 

私の意見ではParse.Object.deepClone方法がいいだろう...

+0

IDを変更することは、これを動作させる鍵でした。私はIDに接頭辞を付けてクローンした後、元に戻す必要がある場合はIDを削除しました複製されたバージョン。 – SimpleOne

0

Parse.Object.clone()で何が起こっていますか?それはあなたが望むものでなければならないようです。

iOS(およびおそらくアンドロイド)SDKには、オブジェクトを最後に保存/フェッチしたときにリセットするオブジェクトの復元方法があります。

javascriptのオブジェクトの場合、関数に渡すと、関数を渡すオブジェクトが変更されるため、関数を渡して関数を渡すと多少なりとも参照渡しとして扱われることに注意してください。

Parse.Object.clone()が機能しない場合、私の次の提案は、新しいオブジェクトシェルを作成し、必要に応じてオブジェクトのフェッチ/クエリーを行うことです。 " データ。

+0

私はクローンを行なったし、その後、元のオブジェクトを操作し、クローンも変更されていることがわかりました!私が読んだところから、オブジェクトが同じidを持つ場合、parseは属性を共通として扱います。私はクエリに行く方法だと思っています... :( – SimpleOne

関連する問題