Swift 显示主视图的视图控制器更改值

Swift 显示主视图的视图控制器更改值,swift,nsmutablearray,presentviewcontroller,Swift,Nsmutablearray,Presentviewcontroller,我有一个双视图控制器 假设是VC1和VC2,我将从VC1演示视图VC2,并发送一个NSMutableArray。像这样: let vc2 = VC2() vc2.array = self.someArray self.presentViewController(vc2, animated: true, completion: nil) 我写了一个代表,当事情发生变化时通知VC1。但当VC2更改数组的值时,VC1处的数组将自动更改。我只想在调用委托方法时更改它 我想不出来。这没有道理 对不起,英

我有一个双视图控制器

假设是VC1和VC2,我将从VC1演示视图VC2,并发送一个NSMutableArray。像这样:

let vc2 = VC2()
vc2.array = self.someArray
self.presentViewController(vc2, animated: true, completion: nil)
我写了一个代表,当事情发生变化时通知VC1。但当VC2更改数组的值时,VC1处的数组将自动更改。我只想在调用委托方法时更改它

我想不出来。这没有道理

对不起,英语不好


祝你度过愉快的一天。

NSMutableArray
之所以被称为mutable是有原因的。它可以改变。当您说
vc2.array=self.someArray
时,这是对同一可变数组的引用,而不是新副本


可以使用
.copy()
创建副本,也可以只使用不可变的常规Swift数组(例如
[Int]
)。

self.someArray的类型是什么?它是NSMutableArray@jtbandesI,我已经尝试过,但不起作用。我在数组中有对象,我应该创建它们的副本吗?谢谢你的回答,顺便说一句,是的。即使使用Swift数组,如果元素是引用类型,也会得到一个浅副本。请阅读更多信息。