在swift 3中复制对象的正确方法是什么?
我有一个对象
var element: Element!
Element是一个ObjectMapper类
class Element: Mappable {
var name = String()
var description = String()
var price = Float()
var optionals = [Optional]()
required init?(map: Map){
}
func mapping(map: Map) {
name <- map["n"]
description <- map["d"]
price <- map["p"]
optionals <- map["o"]
}
}
我想使用元素类型的某个对象初始化元素,然后创建从元素复制的 tmpElement 修改 tmpElement 并保留元素“未触动”。
如果我这样做
tmpElement = element
我想我正在传递引用,所以我在tmpElement中修改它也将在元素中修改。
那么哪种方式正确?我希望自己解释一下......
答案 0 :(得分:1)
您可以编写一个init
ializer,将Element
复制为参数:
...
init(element:Element) {
name = element.name
description = element.description
price = element.price
optionals = element.optionals
}
...
并像这样使用它:
let element = Element(map)
let copy = Element(element)
或者,您可以将Element
设为struct
而不是class
。