结构数组中的变量

时间:2015-09-03 22:26:32

标签: arrays swift struct

我有structvariables类型1 - NSDate 2 - NSDateFormatter。然后,我有array存储其中几个structs

struct Item {
    let prop1 : NSDate
    let prop2 : NSDateFormatter
}

var myItem = [Item]()

var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH-mm-ss-SS"
myItem.append(Item(prop1: myDateThird, prop2: dateFormatter1))

for c in myItem{
    println(c.prop2.stringFromDate(c.prop1))
}

输出

00:66

到目前为止一切顺利。在我将struct添加到array后,我修改了我最初添加的dateFormatter:并将其作为另一个对象添加到array

dateFormatter.dateFormat = "mm-ss-SS"
myItem.append(Item(prop1: myDateThird, prop2: dateFormatter1))

for c in myItem{
    println(c.prop2.stringFromDate(c.prop1))
}

输出:

23:59:56:80
00:00:00:66

为什么第一个dateFormatter的格式在我已添加到array后会发生变化?我没有修改arrays dateFormatter。我该怎么做才能解决这个问题,并确保我已添加到dateFormatter的{​​{1}}不会改变?

1 个答案:

答案 0 :(得分:0)

结构只是浅层复制:复制struct不会创建具有类类型的对象的不同实例。 NSDateFormatter实例是相同的,因此由您的结构共享。您需要创建另一个实例以避免共享。