當創建對象的實例時,如果將該屬性分配給另一個變量,則無法設置其屬性。Swift 3 references
例如,對於包含嵌套對象的對象,我想將其中一個孩子分配給一個臨時變量,以使其更容易處理。
而不是做這個(工作)的:
myObj.myChildObject[0].someOtherChild[0].property = "something"
我試圖做的事:
var t = myObj.myChildObject[0].someOtherChild[0]
t.property = "something"
// this doesn't throw an error but doesn't change the value of myObj
是怎麼回事?
編輯>
這裏是一個人爲的例子來說明:
class Car { var name: String = "" }
var merc = Car()
var obj = merc.name
merc.name = "C63 AMG"
obj = "E300"
print("merc.name: \(merc.name)") // prints merc.name: C63 AMG
print("obj.name: \(obj)") // prints obj.name: E300
var ob2 = merc
ob2.name = "Toyota"
print("ob2.name: \(ob2.name)") // prints ob2.name: Toyota
print("merc.name: \(merc.name)") // prints merc.name: Toyota
所以分配類實例的變種會創建一個參考。但是將該對象的屬性賦值給另一個var會創建一個副本?
我通過https://developer.apple.com/swift/blog/?id=10讀,還是不明白:(
在上面,「OBJ」不是一個結構,枚舉或元組,所以它不應該是引用類型?
編輯您的問題討論,顯示類型的'myObj','myChildObj'和'someOtherChild'有人也許能幫助你。 – CRD