Reference Swift 3参考资料

Reference Swift 3参考资料,reference,swift3,Reference,Swift3,创建对象的实例时,如果将属性指定给另一个变量,则设置其属性时会遇到问题 对于包含嵌套对象的对象,我想将其中一个子对象指定给临时变量,以使其更易于使用 而不是这样做(这是可行的): 我正在努力做到: var t = myObj.myChildObject[0].someOtherChild[0] t.property = "something" // this doesn't throw an error but doesn't change the value of myObj 有什么好处

创建对象的实例时,如果将属性指定给另一个变量,则设置其属性时会遇到问题

对于包含嵌套对象的对象,我想将其中一个子对象指定给临时变量,以使其更易于使用

而不是这样做(这是可行的):

我正在努力做到:

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会创建一个引用。但是将该对象的属性分配给另一个var会创建一个副本吗

我通读了一遍,还是不明白:(


在上面的例子中,“obj”不是一个结构、枚举或元组,所以它不应该是一个引用类型吗?

如果
myObj.myChildObject[0]。someOtherChild[0]
是一个值类型(即严格、直接的枚举或元组),它在分配到
t
时被复制。
t
上的后续突变只会突变该副本,而原始实例不变

您必须将
t
重新分配回:

var t = myObj.myChildObject[0].someOtherChild[0]
t.property = "something"
myObj.myChildObject[0].someOtherChild[0] = t

这是在

中讨论的,谢谢Alexander。我刚才在这里读到了值与引用类型:它说引用类型会将引用复制到同一个对象,这就是我所追求的。在上面的例子中,数组中的对象是自定义类,而不是结构。我误解了什么?我不确定你希望我做什么我可以说,鉴于你还没有展示这些结构/对象是什么,恐怕这是错误的。赋值时没有复制引用类型,值类型是。哦,我错了。在以后的情况下,你可以建议编辑。我现在已经修复了,谢谢。谢谢各位。我在上面添加了更多的细节和示例代码。我确定Swift没有损坏!只是我的理解它。编辑您的问题以显示
myObj
myChildObj
someOtherChild
的类型,可能有人可以帮助您。
var t = myObj.myChildObject[0].someOtherChild[0]
t.property = "something"
myObj.myChildObject[0].someOtherChild[0] = t