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
我有这个简单的代码:
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