Ios 如何使用UITableView indexPath(带节)更新数据源数组(不带节)?

Ios 如何使用UITableView indexPath(带节)更新数据源数组(不带节)?,ios,arrays,swift,uitableview,tableview,Ios,Arrays,Swift,Uitableview,Tableview,我有一个从数据库检索的原始项目数组: var items = [Item]() 其中包括: 水果、苹果、红色、1 水果,橙子,橙子,2 蔬菜,生菜,绿色,1 饮料,牛奶,白葡萄酒,1 要在按节分组的UITableView中显示此列表,我将生成以下结构: struct Section { var sectionName : String! var sectionItems : [Item]! } var sections : [Section]! 使用sections数组,我

我有一个从数据库检索的原始项目数组:

var items = [Item]()
其中包括:

  • 水果、苹果、红色、1
  • 水果,橙子,橙子,2
  • 蔬菜,生菜,绿色,1
  • 饮料,牛奶,白葡萄酒,1
  • 要在按节分组的UITableView中显示此列表,我将生成以下结构:

    struct Section {
        var sectionName : String!
        var sectionItems : [Item]!
    }
    
    var sections : [Section]!
    
    使用sections数组,我可以正确地显示UITableView。如果需要更改项目的数量,我可以轻松地更改数组中的项目,通过indexpath的节和行访问数据

    问题:

    但是,我不知道如何更改原始数据(4项列表),这是我需要用来保存在数据库中的数据。indexpath信息没有告诉我执行更改需要访问items数组中的哪个索引

    解决方案?

    我正在考虑两种解决方案,这两种方案似乎都不太好:

  • 通过迭代“部分”来重建原始列表。考虑到我可以简单地通过索引访问项目,听起来好像有很多不必要的迭代

  • 为每个项创建一个附加属性,以保持其索引在原始数组中的位置。不过,这个看起来很乱

  • 你们会怎么做


    提前非常感谢。

    选项1很简单,只是一个简单的迭代。@rmaddy感谢您的评论!我同意,我只担心这会造成不一致的地方。通过坚持使用一个原始阵列并仅对该阵列执行必要的更改,考虑到数据处理和计算效率,这似乎是一种更安全的方法。但是,是的,选项1似乎是最简单的解决方案。我甚至不会保留原始数组。无论何时需要它,从
    数组重构它都是非常简单的。