簡體   English   中英

如何制作自定義對象的NSMutableArray屬性的深層副本

[英]How to make a deep copy of an NSMutableArray property of a Custom Object

我有一個具有NSMutableArray屬性的CustomObject(類型為NSObject)。 此屬性包含NSDictionary對象。 我只需要屬性的深層副本即可在不同的視圖控制器中進行編輯; 編輯后,我希望將原始屬性替換為已編輯的深度復制屬性。

我的問題是:

  • 我需要做一個很深的'copyWithZone'嗎?
  • 如果是這樣,考慮到它只是需要深度復制的單個屬性,我如何實現它?

我現在通過執行以下操作來規避此問題:

NSMutableArray *deepCopyArray = [NSMutableArray arrayWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:<CustomObject>instance.<propertyToDeepCopy>]]];

盡管這可以作為NSMutableArray和NSDictionary實現NSCoding的方式,但是它感覺不正確,不是嗎? 請幫助:)

這是一種具有多種優點的可接受方法:

  1. 有用
  2. 簡單明了
  3. 這是很少的代碼
  4. 它自成一體,因此將來很容易更改

任何替代方法都意味着您需要遍歷目錄內容並自己手動復制所有內容,您可能有以下兩個原因:

  1. 您知道什么是真正不變的,可以避免復制
  2. 您需要可變容器(數組中的字典)

盡管即使在某些情況下,您也希望僅使用屬性列表來運行類似的基於存檔的過程(因此,您將繼續編寫最少的代碼並利用提供的SDK)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM