假设我有一个带有didSet的字符串数组:
var bar: [String] = [] {
didSet {
println("Set to \(bar)")
}
}
设置一些元素给我们:
bar = ["Hello", "world"] // Set to [Hello, world]
bar[0] = "Howdy" // Set to [Howdy, world]
问题:在我的didSet中,如何获取已设置的元素的索引?
答案 0 :(得分:1)
您无法直接访问已更改元素的索引,部分原因是在特定索引处设置新值只是一个将触发didSet
处理程序的操作。任何变异方法都会导致调用:
bar = ["Hello", "world"] // Set to [Hello, world]
bar[0] = "Howdy" // Set to [Howdy, world]
bar.insert("cruel", atIndex: 1) // Set to [Howdy, cruel, world]
bar.replaceRange(0..<1, with: ["So", "long"]) // Set to [So, long, cruel, world]
bar.removeRange(2..<3) // Set to [So, long, world]
bar.append("!") // Set to [So, long, world, !]
bar.removeAll() // Set to []
在didSet
处理程序中,您可以访问名为oldValue
的特殊变量,该变量包含观察变量的先前值。如果您需要更多内容,则需要实施struct
或class
使用Array
进行存储,但提供自己的真正访问方法。