2017-03-22 49 views
0

哪種方法可以在swift 3中複製對象?複製自定義對象按值複製它不是通過引用

我有一個對象

var 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"] 
    } 

} 

我想初始化元件Element類型的一些對象,然後創建一個tmpElement複製來自元素修改tmpElemen t並且離開元件「未觸及」。

如果我做

tmpElement = element 

我想我路過所以我在tmpElement修改將在元素被修改過的參考。

那麼哪條路是正確的?我希望我解釋自己...

回答

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 a struct而不是class

+0

好吧,我將所有的可打印的類作爲結構體......現在會對memoy的用法產生影響嗎? – Quetool

+0

您可以在[語言指南](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ClassesAndStructures.html)中找到有關類和結構的詳細信息。或谷歌的「複製寫」和「價值和參考類型」的Swift獲得更好的理解 – shallowThought

+0

非常感謝你! – Quetool