How do I make a exact duplicate copy of an array?

前端 未结 5 1440
一向
一向 2020-11-27 13:24

How would I make an exact duplicate of an array?

I am having hard time finding information about duplicating an array in Swift.

I tried using .copy()

5条回答
  •  眼角桃花
    2020-11-27 14:13

    Arrays have full value semantics in Swift, so there's no need for anything fancy.

    var duplicateArray = originalArray is all you need.


    If the contents of your array are a reference type, then yes, this will only copy the pointers to your objects. To perform a deep copy of the contents, you would instead use map and perform a copy of each instance. For Foundation classes that conform to the NSCopying protocol, you can use the copy() method:

    let x = [NSMutableArray(), NSMutableArray(), NSMutableArray()]
    let y = x
    let z = x.map { $0.copy() }
    
    x[0] === y[0]   // true
    x[0] === z[0]   // false
    

    Note that there are pitfalls here that Swift's value semantics are working to protect you from—for example, since NSArray represents an immutable array, its copy method just returns a reference to itself, so the test above would yield unexpected results.

提交回复
热议问题