所以我必须将自定义类的实例从一个UIViewController
传递到另一个:
targetVC.reservation = self.reservation!
print(self.reservation!.id, "before")
targetVC.reservation!.phoneNumber = self.phoneTextField.text!.phoneToString()
targetVC.reservation!.id = id
print(self.reservation!.id, "after")
我的问题是self.reservation!.id
也发生了变化:" 之前"它是""
," 在"之后它是id
。为什么会发生这种情况以及如何避免这种情况?
答案 0 :(得分:2)
您可以将mutableCopy()
与您的对象一起使用,但为此您的自定义类需要从NSObject
扩展而其返回类型为Any
,因此您需要明确地将其结果输入到您的CustomClass
。
targetVC.reservation = self.reservation!.mutableCopy() as! YourCustomClass
答案 1 :(得分:1)
类是ref类型。因此,无论何时分配targetVC.reservation!.id = id
,它都会更改self.reservation.id
值。两者都指向同一个对象。如果您在reservation.id
更改时不想更改targetVC.reservation!.id
值,则可以使用mutableCopy
创建课程副本,但您的课程需要将NSObject
扩展为@Nirvad D说或者您可以使用Structures
这是值类型。
您可以访问文档以进一步阅读Classes and Structures