在Swift 2.0中将新项目追加到类的数组中

Dua*_*rte 1 class append ios swift swift2

这真让我抓狂。我一直都使用“追加”,但是这次我真的找不到问题。每当我向数组添加新项目时,所有元素都保持相同,等于最后添加的元素。我想念什么?我相信这一定很简单...

  var MyDatabase : [MyClass] = []

    class MyClass : NSObject {
        var x : String = ""
    }

    let Item = MyClass()
    for (var i = 0 ; i < 5 ; i++){

        Item.x = "\(i)"
        MyDatabase.append(Item)
        print(MyDatabase.first!.x) // it shows 0,1,2,3,4 and it should always be "0"
    }
    for (var i = 0 ; i < MyDatabase.count ; i++){
    print(MyDatabase[i].x) // it shows 4,4,4,4,4 and it should be 0,1,2,3,4
    }
Run Code Online (Sandbox Code Playgroud)

Leo*_*Leo 5

因为Swift类是引用类型,所以您只需添加5个指向同一对象的引用

更改为此以创建5个对象

class MyClass : NSObject {
    var x : String = ""
}

var MyDatabase : [MyClass] = []

for (var i = 0 ; i < 5 ; i++){
    let Item = MyClass()
    Item.x = "\(i)"
    MyDatabase.append(Item)
}
print(MyDatabase.first!.x) // 0
Run Code Online (Sandbox Code Playgroud)

Swift结构是值类型,

struct MyClass {
    var x : String = ""
}

var MyDatabase : [MyClass] = []
var Item = MyClass()

for (var i = 0 ; i < 5 ; i++){
    Item.x = "\(i)"
    MyDatabase.append(Item)
    print(MyDatabase.first!.x) // 0 0 0 0 0 
}
Run Code Online (Sandbox Code Playgroud)