Ios 如何克隆对象模型
我希望使用Mirror添加到父类,而不必添加子类的克隆 你认为这可能吗 基类: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
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:)
函数