Swift类属性更新

时间:2016-12-27 11:00:34

标签: swift class properties object-reference

所以我必须将自定义类的实例从一个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。为什么会发生这种情况以及如何避免这种情况?

2 个答案:

答案 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