如何防止对象被覆盖 - 迅速? ViewController1中的对象被ViewController2中的相同类型的对象覆盖

时间:2018-04-04 11:00:52

标签: ios swift object viewcontroller

这只是实际发生的事情的视觉情景。

我的View Controller1中有一个对象A.类似地,我在View Controller2中有一个类似于ObjectA类型的ObjectB。

现在,点击一个按钮,我从第一个视图控制器分配ViewController2.ObjectB = ViewController1.ObjectA(或self.ObjectA)。

现在,数据成功传递到ViewController2。但是,当我在ViewController2中对ObjectB执行一些更改时,更改也会反映在ViewController1的ObjectA中。

这不应该发生,因为ObjectA的原始数据随后丢失,如果用户来自ViewController1到ViewController2,我需要这样做,反之亦然,因为我总是在点击我的按钮时执行此ViewController2.ObjectB = ViewController1.ObjectA ViewController1。

任何人都知道该怎么做?请帮帮我。这让我疯狂: - (

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您的对象是通过引用传递的,而不是通过值传递的。 你可以做的是复制你的对象,而不是传递对象本身。

ViewController2.ObjectB = ViewController1.ObjectA.clone()

你必须在ObjectA类中实现克隆函数,它将从当前的对象创建一个新对象,如下所示

class MyClass {
    let number: Int

    init(number: Int) { 
        self.number = number
    }

    func clone() -> MyClass {
        return MyClass(number: self.number)
    }
}

如果你想了解更多信息 https://developer.apple.com/swift/blog/?id=10https://www.raywenderlich.com/112027/reference-value-types-in-swift-part-1