gpt4 book ai didi

ios - 如何快速复制类对象数组

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:54 25 4
gpt4 key购买 nike

所以我知道swift数组是作为struct实现的,它会自己自动复制。

我已经编写了我的类 MyClass 并且我已经实现了 copyWithZone 来复制它

但是,我的 swift 数组包含我的 MyClass 对象,例如:

var array = [MyClass]()

当我想复制那个数组时

var anotherArray = 数组

它仍然没有调用MyClassObject.copyWithZone,稍后如果我更改array中的对象属性,anotherArray也会反射(reflect)出变化.

如果不编写 for 循环来遍历每个对象,我如何 复制该对象?

它没有被复制为 deep copy for array of objects in swift因为我不能使用 struct 来重写我的类。

最佳答案

作为一个简单的语句,您可以使用如下代码:

var copiedArray = array.map{$0.copy()}

请注意,术语“deepCopy”对您所说的内容有点误导。如果数组是异构的并且包含其他容器,如数组、字典、集合和其他自定义容器和“叶”对象怎么办?你真正应该做的是创建一个 DeepCopiable 协议(protocol),并要求任何符合 DeepCopiable 的对象都要求任何子对象也符合 DeepCopiable 协议(protocol),并编写 deepCopy() 方法递归调用 deepCopy() 对所有子对象。这样你就可以得到一个可以在任意深度工作的深拷贝。

关于ios - 如何快速复制类对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34446353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com