我有一个 struct
,其中有 2 个变量
,类型为 1 - NSDate
2 - NSDateFormatter
。然后我有一个数组
来存储其中几个结构
:
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
中后,为什么它的格式会发生变化?我不会修改数组 dateFormatter
。我该如何修复它并确保已添加到 array
中的 dateFormatter
不会更改?
最佳答案
结构仅是浅复制的:复制struct
不会创建具有类类型的对象的不同实例。 NSDateFormatter 实例是相同的,因此由您的结构共享。您需要创建另一个实例以避免共享。
关于arrays - 结构体数组中的变量变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32386397/