我有struct
个variables
类型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}}不会改变?
答案 0 :(得分:0)
结构只是浅层复制:复制struct
不会创建具有类类型的对象的不同实例。 NSDateFormatter实例是相同的,因此由您的结构共享。您需要创建另一个实例以避免共享。