swift中对象数组的深层复制

swift中对象数组的深层复制,第1张

概述我有这个名为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 : St 我有这个名为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实例,我将如何制作它的深层副本?

这个搜索结果对我没有帮助
How do I make a exact duplicate copy of an array?

由于ordered是一个swift数组,声明
var orderedcopy = ordered

将有效地制作原始数组的副本.

但是,由于Meal是一个类,因此新数组将包含引用
与原来提到的同样的饭菜.

如果你想要复制膳食内容,那么在一个数组中改变一顿饭不会改变另一个阵列中的一餐,那么你必须将Meal定义为结构,而不是一个类:

struct Meal {   ...

从Apple book:

Use struct to create a structure. Structures support many of the same behaviors as classes,including methods and initializers. One of the most important differences between structures and classes is that structures are always copIEd when they are passed around in your code,but classes are passed by reference.

总结

以上是内存溢出为你收集整理的swift中对象数组的深层复制全部内容,希望文章能够帮你解决swift中对象数组的深层复制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1051180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存