我需要复制一个自定义对象。是否可以手动复制每个字段?
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" */
请建议我任何可能的解决方案?
答案 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,
您需要确认协议NSCopying并实施上述copyWithZone:方法。
在copyWithZone方法中,只需使用构造函数方法创建对象并返回该对象。
每当您想要在激动人心的物体上复制呼叫副本时。 有关完整参考,请参阅Apple官方https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectCopying.html
如果只有Copy是你对象的主要关注点,那么只使用Structure而不是class,因为它们是值类型而不是引用类型。将类更改为结构将使您的类型成为值类型,但具有许多面向对象的限制。 感谢
答案 1 :(得分:0)
因为类是引用类型,所以可以使用struct
(值类型)来执行此操作
This answer是一个非常好的例子