Swift 变量值在循环后返回原始值

Swift variable value back to original after loop

我有这个简单的代码:

for index in 0..<people.count {
    var person = people[index]
    var home = homes[index]
    person.home = home
    println("\(person.home)")
}

for index in 0..<people.count {
   var person = people[index]
   println("\(person.home)")
}

人:

struct Person: Deserializable {
    var home: Home?

    init() { }

    init(data: [String : AnyObject]) {
        home <-- data["home"]
    }
}

在第一个循环的 println 语句中,它将 home 分配给它各自的 person 并打印正确的 home.

在第二个循环中,它打印nil(恢复正常)。就好像第一个循环没有效果一样。

我不知道如何调试它。请帮忙

您没有提供任何关于的人的信息。但假设它是一个结构。然后我不希望对 people 数组的人有任何影响,因为 var person = people[index] 中的人是 copy.

所以在那种情况下,您需要在第一个循环中添加一行,将改变后的人写回到数组中:

people[index] = person