如何复制自定义对象?

时间:2017-08-28 06:37:17

标签: ios swift

我需要复制一个自定义对象。是否可以手动复制每个字段?

 var test1  = CustomerInfo()
 var test2 = CustomerInfo()
 test1 = test2
 test1.customername = "First"
 test2.customername = "Second"

 print(test1.customername) /* Getting "Second" , actually i want to get "First" */

请建议我任何可能的解决方案?

2 个答案:

答案 0 :(得分:2)

 func copy(with zone: NSZone? = nil) -> Any {
        let copy = CustomerInfo(myIvar1: Type, myIvar2: type)//constructor or your class
        return copy
    }
 var test1  = CustomerInfo()
 var test2 = test1.copy as! CustomerInfo

你好Jan,

  1. 您需要确认协议NSCopying并实施上述copyWithZone:方法。

  2. 在copyWithZone方法中,只需使用构造函数方法创建对象并返回该对象。

  3. 每当您想要在激动人心的物体上复制呼叫副本时。 有关完整参考,请参阅Apple官方https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectCopying.html

  4. 如果只有Copy是你对象的主要关注点,那么只使用Structure而不是class,因为它们是值类型而不是引用类型。将类更改为结构将使您的类型成为值类型,但具有许多面向对象的限制。 感谢

答案 1 :(得分:0)

因为类是引用类型,所以可以使用struct(值类型)来执行此操作

This answer是一个非常好的例子