swift - 当我附加一个值时,整个数组正在更改为附加值
问题描述
我在 for 循环中追加,但由于某种原因,它没有在末尾追加,而是更改了数组中的所有现有值。
let a = 2
class people {
var name = " "
var height = Int()
}
var trial = " "
var p = [people]()
var user = people()
for i in 0...a-1{
if(i==0){
user.name = "jack"
user.height = 180
}
else {
user.name = "ryan"
user.height = 120
}
p.append(user)
print(p[i].name, p[i].height);
}
for i in 0...a-1 {
print(p[i].name, p[i].height);
}
预期: - 杰克 180 瑞安 120 杰克 180 瑞安 120
结果:- 杰克 180 瑞安 120 瑞安 120 瑞安 120
解决方案
您只创建一个instance
并将people
其添加instance
到您的数组中两次。但问题是当您第二次分配该值时,它会替换之前的相同值instance
。
您必须为每个新用户在您的内部创建新instnse
的。像下面people
for loop
let a = 2
class people {
var name = " "
var height = Int()
}
var trial = " "
var p = [people]()
//var user = people() remove this line from here and add inside for-loop
for i in 0...a-1{
var user = people() // add this line here.
if(i==0){
user.name = "jack"
user.height = 180
}
else {
user.name = "ryan"
user.height = 120
}
p.append(user)
print(p[i].name, p[i].height);
}
for i in 0...a-1 {
print(p[i].name, p[i].height);
}
推荐阅读
- python - 在 Python 中从保存的文件中查找元素
- python - 用空格替换列表中的重复值
- reactjs - 如何防止 MaterialUI 切换动画?
- javascript - 我不太明白带有 err 或 error 参数的回调函数
- python - Heroku:Django Migration 版本未在部署中运行
- javascript - 是否可以在 iframe 或 div 中播放 tiktok?
- rust - 尝试 Bindgen 教程时看到 bzlib.h 未找到
- swift - Firebase 快照参考给出了“任何?”类型的表达式 是未使用的警告
- python - Riot API - 我可以从哪里获取个人资料图片?Python
- mysql - SQL 中的工作台