Ios 如何克隆对象模型

Ios 如何克隆对象模型,ios,swift,reflection,prototype,mirror,Ios,Swift,Reflection,Prototype,Mirror,我希望使用Mirror添加到父类,而不必添加子类的克隆 你认为这可能吗 基类: class BaseModel { func clone() -> BaseModel { let mirror = Mirror(reflection : self) for (lable , value) in mirror.children { } return ... } } 子类: class Us

我希望使用Mirror添加到父类,而不必添加子类的克隆

你认为这可能吗

基类:

class BaseModel {

 func clone() -> BaseModel {

          let mirror = Mirror(reflection : self)
           for (lable , value) in mirror.children {

             }
          return ...
   }
}
子类:

class UserModel:BaseModel {

   var name:String!
   var family:String!

}
用法:

 let cloneModel = self.userModel.clone()

您必须实现
NSCopying
协议并覆盖
copy(使用:)
功能:

class BaseModel: NSCopying {

   var xx: String?
   var yy: Int?

   private init(xx: String, yy: Int) {
       self.xx = xx
       self.yy = yy
   }

   func copy(with zone: NSZone? = nil) -> Any {
       let copy = BaseModel(xx: xx, yy: yy)
       return copy
   }
}
用法:

将clone=model.copy()设为!基本型号

或者您可以参考以下答案:

无需执行此操作,因为您可以在swift中创建对象的副本。只需使用struct创建您的模型,然后将其分配给新变量,即可自动创建将模型分配给新变量的新副本。Y_Y thamks,项目i无法更改ModelsHank的结构,但我需要UserModel,克隆childs模型类而不是父类相同的想法,使子类符合
NSCopying
协议,并重写
copy(with:)
函数