我有2个tableViews,我试图在同一结构上显示单独的数组。第二个array / tableView只是第一个的子集;用户可以选择第一个tableView的行,并将该对象复制到第二个array / tableView上。我希望顺序相同,但是还没有找到一种使用结构的方法。
struct SomeTasks {
var name: String
var listOfPossibleThings: [List]
var listOfActualThings: [List]
}
struct List {
var name: String
var items: [Item]
}
struct Item {
var name: String
}
用户在listOfPossibleThings数组中创建新的List对象,并将其移至listOfActualThings中/从中移出。
TableViewOne使用someTasks.listOfPossibleThings填充其单元格;对于确实移至tableViewTwo的结构,我希望顺序保持不变。用结构执行此顺序逻辑的最佳实践是什么?谢谢!
答案 0 :(得分:0)
管理两个数组的顺序既困难又容易出错,我认为最好只存储一个数组,而每次需要时都计算另一个数组。
类似这样的东西
struct someTasks {
var name: String
var listOfPossibleThings: [List]
var listOfActualThings: [List] {listOfPossibleThings.filter {$0.isActualThing}}
}
struct List {
var name: String
var items: [Item]
var isActualThing: Bool = false
}
struct Item {
var name: String
}
var foo = someTasks(name: "foo", listOfPossibleThings: [
List(name: "list0", items: [Item(name: "item0.0")]),
List(name: "list1", items: [Item(name: "item0.0"), Item(name: "item0.1")])
])
foo.listOfPossibleThings // list0, list1
foo.listOfPossibleThings[1].isActualThing = true
foo.listOfActualThings // list1
foo.listOfPossibleThings[0].isActualThing = true
foo.listOfActualThings // list0, list1