我有一个方法可以执行以下操作:
let object = sportsArray[0]
let newObject = object
newObject.items?.removeAll()
当我这样做时,新对象' '项目'数组现在是空的,这是我想要的,但它也是清空'项目'数组中的对象' ..我在这里做错了什么?如何防止这种情况发生。我想对newObject进行更改,而不会影响原始对象。任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:2)
sportsArray[0]
,object
和newObject
都是引用到相同的类实例。当您使用任何引用更改该实例时,其他引用将反映该更改,因为它们引用相同的内容。
您需要使用初始化工具或.copy
显式创建对象的新实例。
答案 1 :(得分:1)
您可以尝试这一点,显然您需要将ClassName
替换为真实的班级名称
let newObject = ClassName(object)
如果您的班级实施NSCopy
,您也可以使用object.copy()
。
看看如何在这里定义一个带有一个参数的新初始化: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html