2017-07-05 3 views
0

以下のコードでは、list1は元の配列です。 私はリスト2にリスト1をコピーするとき、私は、リスト2に変更したときにそれが元の配列(リスト1)クラスオブジェクトのスワイプ配列のコピーを作成する方法

class Card { 
    var availableBalance  = "5" 
} 
class DataCacheManager: NSObject { 
    var allCardList    = [Card]() 
} 
var card = Card() 
card.availableBalance = "10" 

var list1 = DataCacheManager() 
list1.allCardList.append(card) 

var list2 = DataCacheManager() 

for item in list1.allCardList { 
    list2.allCardList.append(item) 
} 

list2.allCardList[0].availableBalance = "20" 

print(list1.allCardList[0].availableBalance) // print 20 but should return 10 

どれでも助けあなたを変更しないでください、それを基準として「allCardList」配列を渡しますが、私はリスト1のコピーを作成したいですそれ?

+0

もちろん、参照オブジェクトを変更しているので、20が印刷されます。異なる値を使用する場合は、配列を詳細にコピーする必要があります。 – Gihan

+1

ディープコピーはどうすればいいですか? –

答えて

2

classには参照の意味があります。最も簡単な解決策は、値の意味を使用することです。

struct Card ... 
0

この質問を見ると、単一のオブジェクトをコピーするプロセスが説明されています。

Implementing copy() in Swift

あなたは、コピーの機能を追加した後、既存のデータからコピーされた配列を作成するためにforループを使って配列を反復処理。

0

これらの参照があなたがケース全体の配列をコピーせずにあなたの条件をachiveする他の方法をでHow do I make a exact duplicate copy of an array?1deep copy arrayをお読みください。たとえば、Cardのオブジェクトとして読み取り専用の元の値を持ち、新しい値などの別の変数を持つことができます。

関連する問題