我面临克隆swift 3中的一个对象的问题。我想复制/克隆一个对象,然后想修改它的值,这样修改就不会影响到实际的对象。这就是我所做的。

let patientInformation = PatientInformationController.shared().pateintInformation.copy() as! PateintInformation

patientInformation.firstName = "Some Name"

上面这一行实际上不仅修改了本地副本,还影响了实际的PatientInformationController.shared().pateintInformation.firstName
髌骨信息符合nscoping协议。
我已经检查了两个对象的内存地址(实际的和复制的),它们是不同的。
在PatientinInformation课程中:
required public init(instance: PateintInformation) {
    self.firstName = instance.firstName
}

public func copy(with zone: NSZone? = nil) -> Any {
    return PateintInformation(instance: self)
}

最佳答案

您错误地实现了类与nscoping协议的一致性。在copy和object中有相同的引用,这就是发生更改的原因。你可以看看怎么做。

09-28 08:33