当创建对象的实例时,如果将该属性分配给另一个变量,则无法设置其属性。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