我将如何精确复制数组?
我很难找到有关在Swift中复制数组的信息。
我尝试使用 .copy()
var originalArray = [1, 2, 3, 4] var duplicateArray = originalArray.copy() 问题来源于stack overflow
数组在Swift中具有全值语义,因此不需要任何花哨的东西。
var duplicateArray = originalArray 是你所需要的全部。
如果数组的内容是引用类型,则可以,这只会将指针复制到您的对象。要执行内容的深层副本,您将改为使用map并执行每个实例的副本。对于符合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方法仅返回对其自身的引用,因此上面的测试将产生意外的结果。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。