我更喜欢@Breek 的答案,他在我还在输入我的答案时发帖了,但无论如何都在这里!您可以执行以下操作:
struct TagViewModel : Equatable {
var tag: String
var selected: Bool
init(tag: String, selected: Bool) {
self.tag = tag
self.selected = selected
}
}
func ==(lhs: TagViewModel, rhs: TagViewModel) -> Bool {
return lhs.tag == rhs.tag
}
var originalArray = [
TagViewModel(tag: "1", selected: false),
TagViewModel(tag: "2", selected: false),
TagViewModel(tag: "3", selected: false),
TagViewModel(tag: "4", selected: false),
TagViewModel(tag: "5", selected: false),
TagViewModel(tag: "6", selected: true),
TagViewModel(tag: "7", selected: false),
TagViewModel(tag: "8", selected: true),
TagViewModel(tag: "9", selected: false)
]
let newArray = [
TagViewModel(tag: "1", selected: true),
TagViewModel(tag: "2", selected: true),
TagViewModel(tag: "3", selected: true)
]
for tagViewModel in newArray {
if let index = originalArray.indexOf(tagViewModel) {
originalArray[index].selected = tagViewModel.selected
}
}