首页 > 解决方案 > 当我附加一个值时,整个数组正在更改为附加值

问题描述

我在 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

标签: swiftappend

解决方案


您只创建一个instance并将people其添加instance到您的数组中两次。但问题是当您第二次分配该值时,它会替换之前的相同值instance

您必须为每个新用户在您的内部创建新instnse的。像下面peoplefor 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);
}


推荐阅读