iOS Swift - 修改一个数组会修改另一个数组

时间:2017-04-26 20:43:08

标签: ios arrays swift

我有一个方法可以执行以下操作:

let object = sportsArray[0]
let newObject = object
newObject.items?.removeAll()

当我这样做时,新对象' '项目'数组现在是空的,这是我想要的,但它也是清空'项目'数组中的对象' ..我在这里做错了什么?如何防止这种情况发生。我想对newObject进行更改,而不会影响原始对象。任何帮助将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:2)

sportsArray[0]objectnewObject都是引用相同的类实例。当您使用任何引用更改该实例时,其他引用将反映该更改,因为它们引用相同的内容。

您需要使用初始化工具或.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