维持TableView之间的阵列顺序?

时间:2019-11-19 12:23:15

标签: ios arrays swift uitableview

我有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的结构,我希望顺序保持不变。用结构执行此顺序逻辑的最佳实践是什么?谢谢!

1 个答案:

答案 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