我有一个叫Meal的课程
class Meal { var name : String = "" var cnt : Int = 0 var price : String = "" var img : String = "" var id : String = "" init(name:String , cnt : Int, price : String, img : String, id : String) { self.name = name self.cnt = cnt self.price = price self.img = img self.id = id } }
而且我有很多餐:
var ordered = [Meal]()
我想复制该数组,然后在其中一个实例中对Meal实例进行一些更改,而在第二个实例中不更改Meal实例,我将如何对其进行深拷贝?
由于ordered是一个快速数组,所以该语句
ordered
var orderedCopy = ordered
将有效地复制原始数组。
但是,由于Meal是一 类 ,因此新数组将包含对原始膳食中相同膳食的引用。
如果您也想复制进餐内容,那么在一个数组中更改进餐不会在另一个数组中更改进餐,那么您必须将Meal定义为 struct 而不是类:
struct Meal { ...
从苹果书中:
使用struct创建结构。结构支持许多与类相同的行为,包括方法和初始化程序。结构和类之间最重要的区别之一是,结构在代码中传递时始终会被复制,而类是通过引用传递的。