Ios 存储有关过滤器选择的数据

Ios 存储有关过滤器选择的数据,ios,swift,uitableview,data-structures,filter,Ios,Swift,Uitableview,Data Structures,Filter,我的怀疑是关于滤网的 我想存储和删除用户分别从筛选屏幕选择和取消选择的数据。我不确定在这里使用什么数据类型 如下图所示: 假设我有几个过滤标题,如“类别”、“颜色”、“单位”等。 &在每个标题中,我都有一些值,比如在类别中,我有来自类别1、类别2的值。。。高达50类。 现在,当用户选择任何类似Category2、category3的内容时。。我可以将这些特定值存储在数组中,但当用户随机取消选择任何类别(取消选中复选框)时,我将如何从数组中删除该特定值,因为我无法在数组中获取相关索引。(这意味着就

我的怀疑是关于滤网的

我想存储和删除用户分别从筛选屏幕选择和取消选择的数据。我不确定在这里使用什么数据类型

如下图所示: 假设我有几个过滤标题,如“类别”、“颜色”、“单位”等。 &在每个标题中,我都有一些值,比如在类别中,我有来自类别1、类别2的值。。。高达50类。 现在,当用户选择任何类似Category2、category3的内容时。。我可以将这些特定值存储在数组中,但当用户随机取消选择任何类别(取消选中复选框)时,我将如何从数组中删除该特定值,因为我无法在数组中获取相关索引。(这意味着就像用户选择的10个类别一样,我的数组中有10个值,但它们在索引方面与tableView索引中的值不匹配。)
请帮助我解决此问题。

以下是我解决此问题的方法。假设我有一个数据源,该数据源将包含项目而不应用任何筛选器。(实际上情况并非如此,您可能会通过网络呼叫获取数据源)一旦用户通过选中或取消选中复选框来应用或删除筛选器,我将使用活动筛选器筛选数据源

假设这是您的项目类

class Item {
    var category: Category
    var color: Color
}

enum Category {
    case one
    case two
    .
    .
    case none
}

// Similarly for color and other parameters
现在,这将是您的过滤器对象,它维护所有处于活动状态的过滤器

class FilterParameters {
    var category: [Category]? = nil
    var color: [Color]? = nil
}
创建此类的对象,每次选中或取消选中筛选器时,使用当前活动的筛选器筛选数据源。(如果未选择筛选器,则忽略该筛选器,并基于现有筛选器构造筛选器参数)