[英]Swift: Call a method from ViewController1 after dismissing ViewController2
[英]How to prevent object being overwritten - swift ? Object in ViewController1 is being over-written with same type of object in ViewController2
這只是實際發生情況的視覺場景。
我的View Controller1中有一個對象A。 同樣,在View Controller2中,我有一個與ObjectA類型相似的ObjectB。
現在,單擊一個按鈕,我從我的第一個視圖控制器分配ViewController2.ObjectB = ViewController1.ObjectA
(或self.ObjectA)。
現在,數據成功傳遞到ViewController2。 但是,當我對ViewController2中的ObjectB進行一些更改時,這些更改也將反映在ViewController1的ObjectA中。
這不應該發生,因為然后丟失了ObjectA的原始數據,如果用戶在從ViewController1到ViewController2之間來回時需要,而我反過來也需要,因為我總是在單擊ViewController1中的按鈕時始終執行此ViewController2.ObjectB = ViewController1.ObjectA
ViewController1.ObjectA 。
有人知道發生了什么嗎? 請幫幫我。 它讓我發瘋:-(
發生這種情況是因為您的對象是通過引用而不是通過值傳遞的。 您可以做的是克隆對象而不是傳遞對象本身。
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=10和https://www.raywenderlich.com/112027/reference-value-types-in-swift-part -1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.