我是Swift语言的初学者。
我如何使一个数组的精确副本?
我很难找到有关在Swift中复制数组的信息。
我试过使用.copy()
var originalArray = [1,2,3,4] var duplicateArray = originalArray.copy()
数组在Swift中有完整的语义,所以没有必要。
var duplicateArray = originalArray就是你需要的。
如果数组的内容是引用类型,那么是的,这将只复制指针到你的对象。要执行内容的深层副本,您将改为使用映射并执行每个实例的副本。对于符合NSCopying协议的Foundation类,可以使用copy()方法:
let x = [NSMutableArray(),NSMutableArray(),NSMutableArray()] let y = x let z = x.map { $0.copy() } x[0] === y[0] // true x[0] === z[0] // false
注意,这里有一些陷阱,Swift的值语义正在努力保护你,例如,因为NSArray表示一个不可变的数组,它的copy方法只是返回一个对它的引用,所以上面的测试会产生意想不到的结果。